首頁 > Java > java教程 > JavaWeb Servlet中關於Filter過濾器的實例分析

JavaWeb Servlet中關於Filter過濾器的實例分析

黄舟
發布: 2017-10-11 09:51:19
原創
1819 人瀏覽過

這篇文章主要介紹了JavaWeb Servlet中Filter過濾器的詳解的相關資料,希望透過本文能幫助到大家,讓大家徹底掌握如何使用,需要的朋友可以參考下

JavaWeb Servlet中Filter過濾器的詳解

1.簡述

          Filter過濾器,對web伺服器所有web資源進行過濾,從而實現一些特殊的功能(權限存取控制、過濾敏感詞彙、壓縮回應資訊)。 Filter能夠對Servlet容器的請求和回應進行檢查和修改,其本身不能產生請求request和回應response,只提供過濾作用(Servlet被呼叫之前檢查Request物件修改其相關訊息,Servlet被調用後檢查Response修改其相關資訊),Filter物件常駐伺服器。

2.Lifecycle

          (1).啟動伺服器,並讀取設定檔web.xml,載入Filter類別並實例化,調用init();
          (2).使用者存取的資源被Filter的url-pattern匹配,並且呼叫doFilter(),要過濾的物件透過chain.doFilter()方法交給下個過濾器處理;
# (3).套用被停止或重新裝載,則呼叫destroy().

#3.chain過濾鏈





#          兩個過濾器有不同的過濾作用,伺服器會依照web.xml中過濾器定義的先後循序組裝成一條鏈,透過chain.doFilter()依序執行每個過濾器的doFilter()。執行過程中任何時候都可以打斷,只要不執行chain.doFilter()就不會再執行後面的過濾器和請求的內容。


4.過濾器的設定


          (1).繼承Filter介面,並複製doFilter()方法
        web.xml的配置,以篩選符合要求的操作

######                 url-pattern設定說明>> ##########關於url-pattern設定說明>> ##################################>>>11; ######
/*
 * MyFilter.java
 * 过滤器
 */
package com.baidu.web;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyFilter implements Filter{

 @Override
 public void destroy() {
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
 FilterChain chain) throws IOException, ServletException {
 //对请求request进行处理
 HttpServletResponse resp = (HttpServletResponse)response;
 HttpServletRequest req = (HttpServletRequest) request;
 String username = (String) req.getSession().getAttribute("username");
 if(req.getRequestURI().contains("Buy") || req.getRequestURI().contains("collect")){
 if(username==null || username.equals("")){ //满足过滤要求,进行处理
 req.getRequestDispatcher("/login.jsp").forward(req, resp);
 return;
 }
 }
 chain.doFilter(req, resp);
 //对相应response进行处理
 }

 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
 //filterConfig,通过filterConfig的getServletContext() 方法可以获得 ServletContext
 }
}
登入後複製

以上是JavaWeb Servlet中關於Filter過濾器的實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板