springboot中filter的用法


 

一、在spring的應用中我們存在兩種過濾的用法,一種是攔截器、另外一種當然是過濾器。我們這里介紹過濾器在springboot的用法,在springmvc中的用法基本上一樣,只是配置上面有點區別。

二、filter功能,它使用戶可以改變一個 request和修改一個response. Filter 不是一個servlet,它不能產生一個response,它能夠在一個request到達servlet之前預處理request,也可以在離開 servlet時處理response.換種說法,filter其實是一個”servlet chaining”(servlet 鏈).

一個Filter包括:
1)、在servlet被調用之前截獲;
2)、在servlet被調用之前檢查servlet request;
3)、根據需要修改request頭和request數據;
4)、根據需要修改response頭和response數據;
5)、在servlet被調用之后截獲.

三、應用

復制代碼
@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() {

    }
}
復制代碼

四、解釋:

1、@Component 這個注解的目的是將LoginFilter交給容器來處理。也就是讓LoginFilter起作用

2、@ServletComponentScan 這個使用來掃描@WebFilter 的讓@WebFilter起作用。當然對於servlet線管注解也是可以的。這個@ServletComponentScan最好卸載Apllication這個上面,通用配置。我這里因為只有一個Filter所以沒有寫在Application上面。

3、@WebFilter 這個用處顯而易見,針對於什么鏈接做過濾,filter的名稱是為什么。

五、簡單介紹一下springmvc中的Filter的用法

1、寫的方法還是一樣的都是繼承Filter,來實現3個方法處理

2、丟入容器:這個需要配置在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>

 


免責聲明!

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



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