1、filter的概念及功能java
Filter就像用濾紙來過濾雜物同樣,它也叫過濾器。過濾器是Servlet2.3以後新增長的功能,它能夠更變一個request請求也能夠修改一個response。它能夠在request到達Servlet以前預處理request,他也能夠在response離開Servlet時處理response,總之,能夠叫他Servlet鏈。通常做用在一下方面:web
1.在request到達Servlet以前: 設計模式
1)對用戶的請求統一的認證;異步
2)編碼的轉換;async
3)對用戶發過來的數據進行替換,也能夠進行加密行爲等。工具
2.在response離開Servlet以後:編碼
1)修改response的頭及數據等。加密
2、代碼實現url
首先要實現 javax.servlet.Filter接口以及三個方法:
spa
1. init(FilterConfig filterConfig)-->初始化過濾器多用於獲取初始化參數。
2.doFilter(ServletRequest servletRequest , ServletResponse servletResponse , FilterChain chain )-->過 濾處理的相關操做都在這裏完成,須要調chain.doFilter(servletRequest ,servletResponse )方法,把請求繼續向 後傳遞,能夠是對下一個過濾器doFilter方法的調用,或者相應的web組件。因此Filter採用了職責鏈設計模式。
3.destroy() 過濾器銷燬 Servlet容器在銷燬過濾器實例以前該方法獲得調用,以釋放佔用的資源。
最後編碼的實現:
對用戶的請求統一的認證,獲取用戶名,若是用戶名爲空,則調到登陸界面,不然放行。
@webFilter裏相關屬性的介紹:
屬性名 類型 描述
filterName String 指定過濾器的name屬性,等價於<filter-name>
value String[] 該屬性等價於urlPatterns屬性,二者不能同時使用
urlPatterns String[] 指定過濾器的URL匹配模式,等價於<url-pattern>
servletNames String[] 指定過濾器將應用到哪些Servlet。取值是@WebServlet的name屬性或者<servlet-name>的值
dispatcherTypes DispatcherType 指定過濾器的轉發模式,取值有:ASYNC ERROR FORWARD INCLUDE REQUEST
initParams WebInitParam[] 指定一組過濾器初始化參數,等價於<init-Param>
asyncSupported boolean 指定過濾器是否支持異步操做模式,等價於<async-supported>
description String 該過濾器的描述信息,等價於<description>
displayName String 該過濾器的顯示名,一般配合工具使用,等價於<display-name>