1、在spring的應用中咱們存在兩種過濾的用法,一種是攔截器、另一種固然是過濾器。咱們這裏介紹過濾器在springboot的用法,在springmvc中的用法基本上同樣,只是配置上面有點區別。web
2、filter功能,它使用戶能夠改變一個 request和修改一個response. Filter 不是一個servlet,它不能產生一個response,它可以在一個request到達servlet以前預處理request,也能夠在離開 servlet時處理response.換種說法,filter實際上是一個」servlet chaining」(servlet 鏈).spring
一個Filter包括:
1)、在servlet被調用以前截獲;
2)、在servlet被調用以前檢查servlet request;
3)、根據須要修改request頭和request數據;
4)、根據須要修改response頭和response數據;
5)、在servlet被調用以後截獲.springboot
3、應用mvc
@Component @ServletComponentScan @WebFilter(urlPatterns = "/login/*",filterName = "loginFilter") public class LoginFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { } @Override public void destroy() { } }
4、解釋:app
一、@Component 這個註解的目的是將LoginFilter交給容器來處理。也就是讓LoginFilter起做用ide
二、@ServletComponentScan 這個使用來掃描@WebFilter 的讓@WebFilter起做用。固然對於servlet線管註解也是能夠的。這個@ServletComponentScan最好卸載Apllication這個上面,通用配置。我這裏由於只有一個Filter因此沒有寫在Application上面。url
三、@WebFilter 這個用處顯而易見,針對於什麼連接作過濾,filter的名稱是爲何。.net
5、簡單介紹一下springmvc中的Filter的用法xml
一、寫的方法仍是同樣的都是繼承Filter,來實現3個方法處理繼承
二、丟入容器:這個須要配置在web.xml裏面
<filter> <filter-name>loginFilter</filter-name> <filter-class>com.troy.boot.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>