Servlet3.0學習總結(二)——使用注解標注過濾器(Filter)


Servlet3.0學習總結(二)——使用注解標注過濾器(Filter)

Servlet3.0提供@WebFilter注解將一個實現了javax.servlet.Filter接口的類定義為過濾器,這樣我們在web應用中使用過濾器時,也不再需要在web.xml文件中配置過濾器的相關描述信息了。

  下面我們來創建一個過濾器,體驗一下使用@WebFilter注解標注過濾器,如下所示:

  

  過濾器的代碼如下:

復制代碼
 1 package me.gacl.web.filter;
 2 import java.io.IOException;
 3 import javax.servlet.Filter;
 4 import javax.servlet.FilterChain;
 5 import javax.servlet.FilterConfig;
 6 import javax.servlet.ServletException;
 7 import javax.servlet.ServletRequest;
 8 import javax.servlet.ServletResponse;
 9 import javax.servlet.annotation.WebFilter;
10 
11 /**
12  * 使用注解標注過濾器
13  * @WebFilter將一個實現了javax.servlet.Filte接口的類定義為過濾器
14  * 屬性filterName聲明過濾器的名稱,可選
15  * 屬性urlPatterns指定要過濾 的URL模式,也可使用屬性value來聲明.(指定要過濾的URL模式是必選屬性)
16  */
17 @WebFilter(filterName="Servlet3Filter",urlPatterns="/*")
18 public class Servlet3Filter implements Filter {
19 
20     @Override
21     public void destroy() {
22         System.out.println("過濾器銷毀");
23     }
24 
25     @Override
26     public void doFilter(ServletRequest request, ServletResponse response,
27             FilterChain chain) throws IOException, ServletException {
28         System.out.println("執行過濾操作");
29         chain.doFilter(request, response);
30     }
31 
32     @Override
33     public void init(FilterConfig config) throws ServletException {
34         System.out.println("過濾器初始化");
35     }
36 }
復制代碼

  過濾器中使用了@WebFilter(filterName="Servlet3Filter",urlPatterns="/*")進行配置,Filter的名字是Servlet3Filter,表示urlPatterns="/*"該Filter攔截所有的請求。

  web服務器啟動時就會初始化該Filter,如下圖所示:

  

  當有用戶訪問web應用中的資源時,該過濾器就會進行攔截,如下圖所示:

  

  可以看到,使用@WebFilter注解,我們可以將一個實現了javax.servlet.Filte接口的類定義為過濾器,用urlPatterns屬性或者value屬性指定要過濾的URL模式。

  可以指定多種過濾模式@WebFilter(filterName="Servlet3Filter",urlPatterns={"/UserManagerServlet","/index.jsp"})

  有了@WebFilter注解之后,我們的web.xml就無需任何配置了。

復制代碼
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="3.0" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 7   <display-name></display-name>    
 8   <welcome-file-list>
 9     <welcome-file>index.jsp</welcome-file>
10   </welcome-file-list>
11 </web-app>
復制代碼

  這樣我們的web.xml文件就非常干凈了。可以說,Servlet3.0規范的出現,大大減少了開發Servlet和Filter配置方面的工作量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM