国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java Web開發——Filter過濾器

2019-11-14 22:53:36
字體:
來源:轉載
供稿:網友
java Web開發——Filter過濾器

一、過濾器

1.1定義

過濾器是一個服務器端的組件,它可以截取用戶端的請求與響應信息,并對這些信息進行過濾。

1.2工作原理

1、項目啟動時,從Web容器中加載過濾器;

2、過濾器存在于用戶請求和Web資源之間;

3、用戶請求和Web響應之間的收發都經由過濾器按照過濾規則進行過濾篩選。

1.3過濾器的生命周期

實例化(web.xml加載)→初始化(init方法)→過濾(doFilter方法)→銷毀(destroy方法)

1、初始化:當容器第一次加載該過濾器時,init() 方法將被調用。該類在這個方法中包含了一個指向 Filter Config 對象的引用。我們的過濾器實際上并不需要這樣做,因為其中沒有使用初始化信息,這里只是出于演示的目的。

2、過濾:過濾器的大多數時間都消耗在這里。doFilter方法被容器調用,同時傳入分別指向這個請求/響應鏈中的 Servlet Request、Servlet Response 和 Filter Chain 對象的引用。然后過濾器就有機會處理請求,將處理任務傳遞給鏈中的下一個資源(通過調用 Filter Chain 對象引用上的 doFilter方法),之后在處理控制權返回該過濾器時處理響應。

3、銷毀:容器緊跟在垃圾收集之前調用 destroy()方法,以便能夠執行任何必需的清理代碼。

過濾器鏈:服務器會按照web.xml中過濾器定義的先后順序組裝成一條鏈

1.4過濾器在web.xml中的基本配置

過濾器在web.xml中的的配置:

<filter>    <filter-name>過濾器名稱</filter-name>    <filter-class>過濾器完整類名</filter-class>    <init-param>        <description>描述信息,可以省略</description>        <param-name>參數名稱</param-name>        <param-value>參數值</param-value>    </init-param></filter><filter-mapping>    <filter-name>過濾器名稱</filter-name>    <url-pattern>URL</url-pattern>    <dispatcher>[REQUEST|INCLUDE|FORWARD|ERROR]</dispatcher></filter-mapping>

1.5過濾器的分類

過濾器的分類表
類型作用
REQUEST用戶直接訪問頁面時,web容器會調用該過濾器
FORWARD目標資源是通過RequestDispatcher的forward方法訪問時,過濾器將被調用
INCLUDE目標資源是通過RequestDispatcher的include方法調用時,過濾器將被調用
ERROR目標資源是通過聲明式異常處理機制調用時,過濾器被將被調用
ASYNC(Servlet3.0新增加)支持異步處理

二、過濾器的基本使用

2.1 過濾器類的設計

實現Filter接口,重寫init、doFilter、destroy方法

public class MyFilter implements Filter{    public void init(FilterConfig filterConfig) throws ServletException{}    /**    *使瀏覽器不緩存頁面的過濾器    */    public void doFilter(ServlerRequest request,ServletResponse response,FilterChain filterChian) throws IOException,ServletException{      ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");      ((HttpServletResponse) response).setHeader("

2.2 過濾器在web.xml中的注冊

1、REQUEST、FORWARD、INCLUDE等類型過濾器的注冊

<!-- 過濾器配置 --><filter>    <filter-name>myFilter</filter-name>    <filter-class>util.filter.MyFilter</filter-class></filter><filter-mapping>    <filter-name>myFilter</filter-name>    <url-pattern>/main.jsp</url-pattern>    <dispatcher>[REQUEST|FORWARD|INCLUDE]</dispatcher></filter-mapping>

2、ERROR類型的過濾器注冊

<!-- 配置錯誤頁面,當出現404錯誤則跳轉至/error.jsp頁面 --><error-page>    <error-code>404</error-code>    <location>/error.jsp</location><error-page><!-- 過濾器配置 --><filter>    <filter-name>errorFilter</filter-name>    <filter-class>util.filter.ErrorFilter</filter-class></filter><filter-mapping>    <filter-name>errorFilter</filter-name>    <url-pattern>/error.jsp</url-pattern>    <dispatcher>ERROR</dispatcher></filter-mapping>

三、Servlet3.0中過濾器的使用

加上 @WebFilter 注解即可,無需在web.xml中注冊

@WebFilter(servletNames={"SimpleServlet"},filterName="SimpleFilter")public class MyFirstFilter implements Filter{}
@WebFilter常用屬性表
屬性名類型描述
filterNameString指定過濾器的name屬性,等價于<filter-name>
valueString[]等價于urlPatterns屬性,但是兩者不要同時使用,若同時使用,優先使用value屬性
urlPatternsString[]指定一組過濾器的URL匹配模式,等價于<utl-pattern>標簽
servletNamesString[]指定過濾器將應用于哪些Servlet。取值是@WebServlet中的name屬性值,或者是web.xml中的<servlet-name>取值
dispatcherTypesDispatcherType指定過濾器的轉發模式。具體取值包括ASYNC、ERROR、FORWARD、INCLUDE、REQUEST
initParamsWebInitParam[]指定一組過濾器初始化參數,等價于<init-param>標簽
asyncSupportedboolean聲明過濾器是否支持異步操作模式,等價于<async-supported>標簽
descriptionString該過濾器的描述信息,等價于<description>標簽
displayNameString該過濾器的顯示名,等價于<display-name>標簽

參考資料:慕課網【JAVA Web開發技術應用——過濾器】http://www.imooc.com/learn/213


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州市| 九龙城区| 繁昌县| 安西县| 七台河市| 丽水市| 房产| 平泉县| 全椒县| 梁河县| 义马市| 张家川| 诏安县| 泸西县| 吉安市| 大邑县| 城口县| 灵宝市| 双城市| 莎车县| 太白县| 宽城| 临猗县| 白城市| 申扎县| 唐山市| 上林县| 江华| 梅州市| 河东区| 华蓥市| 革吉县| 行唐县| 牙克石市| 潼南县| 如东县| 潞西市| 育儿| 康保县| 砀山县| 永安市|