1. 程式人生 > >springboot中filter的用法

springboot中filter的用法

改變 pll code row logs ini 作用 onf 我們

一、在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>

3、具體的用法可以自己研究。


springboot中filter的用法