1. 程式人生 > >Servlet之過濾器(Filter)和監聽器(Listener)

Servlet之過濾器(Filter)和監聽器(Listener)

卸載 ons str alt 用戶 監聽 實際應用 .com except

過濾器

過濾器是一個java組件,可以攔截發送至某個servelet,jsp頁面或靜態頁面的請求,可以在響應發送到客戶之前進行攔截

工作原理:

技術分享圖片

過濾器類必須實現 Filter 接口,包含的方法如下:

void destroy()   //銷毀方法

void init(FilterConfig filterConfig) throws ServletException  //初始化方法

//主要的工作方法   
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {
    //這裏寫request的相關代碼
    chain.doFilter(request, resp);
    //這裏寫response的相關代碼
}

FilterChain chain 過濾器鏈

FilterChain 接口用於調用過濾器鏈中的下一個過濾器或調用過濾器結束後的資源

過濾器鏈如圖:

技術分享圖片

過濾器生命周期的各個階段:

實例化:Web容器在不是web應用程序的時候對所有過濾器進行實例化

    web容器回調它的無參構造方法

初始化:實例化完成之後,馬上進行初始化工作

    web容器回調init方法

過濾:請求路徑匹配過濾器的URL映射

    web容器回調 doFilter方法  --> 主要工作方法 

銷毀:Web容器在卸載web應用之前

    web容器回調 destroy方法

過濾器的實際應用:

1.對請求消息體中的數據設置統一的編碼

2.阻止非法用戶的請求

3.過濾非法數據

註意:

過濾器使用時需要在web.xml中配置,需要在

<filter>
    <display-name>OurFilter</display-name>
    <filter-name>OurFilter</filter-name>
        <filter-class>nm.filter.OurFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>OurFilter</filter-name>
    <url-pattern>/show.do</url-pattern>
</filter-mapping>

過濾器的簡單實例應用

我們都知道當我們百度搜索關鍵詞的時候,搜索出的關鍵詞會變成著重飄紅,

Servlet之過濾器(Filter)和監聽器(Listener)