亚洲天堂一级片-亚洲天堂三区-亚洲天堂久久精品成人-亚洲天堂毛片-久久国产欧美日韩高清专区-久久国产欧美日韩精品免费

通州北大青鳥學(xué)術(shù)部:Servlet四種過濾器的工作方式

  通州北大青鳥學(xué)術(shù)部提供:從J2EE1.3開始,Servlet2.3規(guī)范中加入了對(duì)過濾器的支持。過濾器能夠?qū)δ繕?biāo)資源的請(qǐng)求和響應(yīng)進(jìn)行截取。過濾器的工作方式分為四種,下面,通州北大青鳥學(xué)術(shù)部老師就給大家介紹一下這四種過濾器的工作方式:

  1、request過濾器
  這種過濾器的工作方式比較簡單,大家也經(jīng)常遇到,如下所示:以下是web.xml文件配置方式:
     <filter>
    <filter-name>myFilter</filter-name>
    <filter-class>packagename.MyFilterName</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>myFilter</filter>
    <servlet-name> 目標(biāo)資源</servlet-name>
    </filter-mapping>
    <filter>

  下面我們更改一下web.xml文件的配置,如下方式:
     <filter-name>myFilter</filter-name>
    <filter-class>packagename.MyFilterName</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>myFilter</filter>
    <servlet-name> 目標(biāo)資源1</servlet-name>
    </filter-mapping>
    <filter-mapping>
    <filter-name>myFilter</filter>
    <servlet-name> 目標(biāo)資源2</servlet-name>
    </filter-mapping>


  也就是說此過濾器對(duì)目標(biāo)資源一和目標(biāo)資源二都進(jìn)行過濾,然后當(dāng)目標(biāo)資源一被訪問的時(shí)候我們將請(qǐng)求轉(zhuǎn)發(fā)給目標(biāo)資源二,那么這個(gè)時(shí)候過濾器是怎么工作的呢?如下圖所示:我們可以看到,當(dāng)我們?cè)L問目標(biāo)資源一時(shí)過濾器截取了請(qǐng)求,然后再轉(zhuǎn)發(fā)給目標(biāo)資源一,然后再轉(zhuǎn)發(fā)給目標(biāo)資源二,從圖中我們可以看到過濾器沒有截取轉(zhuǎn)發(fā)到目標(biāo)資源二的請(qǐng)求,但是我們已經(jīng)在web.xml文件中配置了該過濾器對(duì)目標(biāo)資源二的過濾,為什么又沒有起到過濾作用呢? 通州北大青鳥

  答案就在于,目標(biāo)資源一是客戶端直接訪問,而目標(biāo)資源二是被轉(zhuǎn)發(fā)過來的,這時(shí)過濾器就不能過濾目標(biāo)資源二。如果你直接訪問目標(biāo)資源二,你會(huì)發(fā)現(xiàn)該過濾器起到了作用?
   我們上面的web.xml文件配置與以下方式等價(jià):
     <filter-name>myFilter</filter-name>
    <filter-class>packagename.MyFilterName</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>myFilter</filter>
    <servlet-name> 目標(biāo)資源1</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <filter-mapping>
    <filter-name>myFilter</filter>
    <servlet-name> 目標(biāo)資源2</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    </filter-mapping>


  這種方式的配置,說明只有直接訪問該目標(biāo)資源時(shí)該過濾器才會(huì)起作用,對(duì)轉(zhuǎn)發(fā)到該目標(biāo)資源的請(qǐng)求將忽略不處理。
  那如果我想對(duì)轉(zhuǎn)發(fā)到目標(biāo)資源二的請(qǐng)求進(jìn)行過濾,那怎么辦呢?答案見,下一種過濾器,forward過濾器。
  2、forward過濾器 (通州北大青鳥)
  我們將web.xml文件的配置修改如下:
    
  <filter-name>myFilter</filter-name>
   <filter-class>packagename.MyFilterName</filter-class>
   </filter>
   <filter-mapping>
   <filter-name>myFilter</filter>
   <servlet-name> 目標(biāo)資源1</servlet-name>
   <dispatcher>REQUEST</dispatcher>
   </filter-mapping>
   <filter-mapping>
   <filter-name>myFilter</filter>
   <servlet-name> 目標(biāo)資源2</servlet-name>
   <dispatcher>FORWARD</dispatcher>
   </filter-mapping>

  我們看對(duì)目標(biāo)資源二過濾的配置方式,這時(shí)過濾方式為forward,也就是說對(duì)轉(zhuǎn)發(fā)到目標(biāo)資源二的請(qǐng)求過濾,如果直接訪問目標(biāo)資源二,過濾器將不起作用。
    3、include過濾器
  理解了forward過濾器之后,include過濾器就不難理解了。以下方式:
    <filter-name>myFilter</filter-name>
   <filter-class>packagename.MyFilterName</filter-class>
   </filter>
   <filter-mapping>
   <filter-name>myFilter</filter>
   <servlet-name> 目標(biāo)資源1</servlet-name>
   <dispatcher>REQUEST</dispatcher>
   </filter-mapping>
   <filter-mapping>
   <filter-name>myFilter</filter>
   <servlet-name> 目標(biāo)資源2</servlet-name>
   <dispatcher>INCLUDE</dispatcher>
   </filter-mapping>

  此表示對(duì)包含了目標(biāo)資源二的請(qǐng)求過濾,如果直接訪問目標(biāo)資源二,則此過濾器將不起作用。 (通州北大青鳥)
  在JSP頁面中的動(dòng)作:指令包含,這時(shí)此過濾器不工作。

  4、error過濾器
  當(dāng)我們?cè)L問一個(gè)web目標(biāo)資源時(shí),²耀服務(wù)器沒有找到該目標(biāo)資源,那么服務(wù)器就會(huì)給出一個(gè)404錯(cuò)誤代碼。如果我們給404錯(cuò)誤代碼定義一個(gè)頁面,那么當(dāng)404錯(cuò)誤發(fā)生時(shí)就會(huì)調(diào)用該頁面,請(qǐng)看以下web.xml文件的配置:

    <filter-name>myFilter</filter-name>
   <filter-class>packagename.MyFilterName</filter-class>
   </filter>
   <filter-mapping>
   <filter-name>myFilter</filter>
   <servlet-name> /error.jsp</servlet-name>
   <dispatcher>ERROR</dispatcher>
   </filter-mapping>
   <error-page>
   <error-code>404</error-code>
   <location>/error.jsp</location>
   </error-page>


  當(dāng)我們?cè)L問一個(gè)不存在的文件時(shí),就會(huì)訪問error.jsp,但是配置了過濾器對(duì)錯(cuò)誤頁面進(jìn)行過濾,所以過濾器先接受到請(qǐng)求,然后再轉(zhuǎn)發(fā)給error.jsp。 (通州北大青鳥)
  如果我們?cè)L問一個(gè)已經(jīng)存在的頁面,會(huì)不會(huì)調(diào)用error.jsp呢?如果這個(gè)頁面中有response.sendError(404,"出錯(cuò)了!");那么該錯(cuò)誤頁面仍然會(huì)被調(diào)用,過濾器也會(huì)工作

(通州北大青鳥)

北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡章
主站蜘蛛池模板: 久久精品视频一区二区三区 | 中文字幕一区二区在线观看 | 欧美成人免费在线观看 | 欧美一级毛片高清毛片 | 久久er热这里只有精品23 | 日韩欧美精品综合一区二区三区 | 欧美一区二区三区激情视频 | 欧美巨大另类极品videohd | 性精品 | 99精品视频一区在线视频免费观看 | 日韩免费毛片全部不收费 | 欧美 亚洲 丝袜 清纯 中文 | 萌白酱香蕉白丝护士服喷浆 | 国产在线欧美日韩精品一区二区 | 成人观看视频又黄又免费 | www.91久久| 免费精品99久久国产综合精品 | 久久成人小视频 | 亚洲在线一区二区三区 | 一区二区三区四区五区六区 | 亚洲精品在线免费 | 日本特级黄毛片毛片视频 | 日产日韩亚洲欧美综合搜索 | 播播网手机在线播放 | 国产女人成人精品视频 | 夜色福利久久久久久777777 | 久草欧美 | 黄网站色视频免费观看w | 日韩freesex呦交 | 视频一区精品 | 国产精品高清久久久久久久 | 91热久久 | 久久啊| 伊人成人在线 | 久久国产欧美日韩精品免费 | 足恋玩丝袜脚视频免费网站 | 九九在线免费观看视频 | 日韩经典欧美精品一区 | 国产一级aaa全黄毛片 | 国产在线精品福利91香蕉 | 一区二区三区精品视频 |