首頁  >  文章  >  Java  >  java過濾器怎麼實現

java過濾器怎麼實現

(*-*)浩
(*-*)浩原創
2019-05-22 16:51:537209瀏覽

java過濾器的實作步驟:1、寫一個過濾器的類別實作Filter介面;2、實作介面中尚未實作的方法(著重實作doFilter方法);3、在web.xml中進行配置(主要是配置要對哪些資源進行過濾)即可。

java過濾器怎麼實現

Filter也稱之為過濾器,它是Servlet技術中最令人興奮的技術之一,WEB開發人員透過Filter技術,對web伺服器管理的所有web資源:例如Jsp,Servlet, 靜態圖片檔案或靜態html檔案等進行攔截,從而實現一些特殊的功能。例如實現URL等級的權限存取控制、過濾敏感詞彙、壓縮回應資訊等一些進階功能。

那麼它是如何實現的呢?

編寫一個過濾器的類別實作Filter介面

實作介面中尚未實作的方法(著重實作doFilter方法)

在web.xml中進行配置(主要是配置要對哪些資源進行過濾)

它的工作原理?

Filter介面中有一個doFilter方法,當我們寫好Filter,並且配置對哪個web資源進行攔截後,WEB伺服器每次在呼叫web資源的service方法之前,都會先呼叫一下filter的doFilter方法,因此,在

在該方法內編寫程式碼可達到以下目的:
呼叫目標資源之前,讓一段程式碼執行。
 是否呼叫目標資源(即是否讓使用者存取web資源)。
呼叫目標資源之後,讓一段程式碼執行。
web伺服器在呼叫doFilter方法時,會傳遞一個filterChain物件進來,filterChain物件是filter介面中最重要的一個對象,它也提供了一個
doFilter方法,開發人員可以根據需求決定是否要呼叫此方法,呼叫該方法,則web伺服器會呼叫web資源的service方法,即web資源就會被訪問,否則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;
/**
* @author yangcq
* @description 过滤器Filter的工作原理
*/
public class FilterTest implements Filter{
    public void destroy() {
        System.out.println("----Filter销毁----");
    }
public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
    // 对request、response进行一些预处理
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    System.out.println("----调用service之前执行一段代码----");
    filterChain.doFilter(request, response); // 执行目标资源,放行
    System.out.println("----调用service之后执行一段代码----");
}
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("----Filter初始化----");
    }
}

在web. xml中設定過濾器:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!--配置过滤器-->
  <filter>
      <filter-name>FilterTest</filter-name>
      <filter-class>com.yangcq.filter.FilterTest</filter-class>
  </filter>
  <!--映射过滤器-->
  <filter-mapping>
      <filter-name>FilterTest</filter-name>
      <!--“/*”表示拦截所有的请求 -->
      <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

以上是java過濾器怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn