Spring 的filter配置問題

在一個項目中Filter的作用有很多,簡單一點的可以設置字符集編碼,請求響應的信息。

request.setCharacterEncoding("utf-8");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("content-type","text/html;charset=utf-8");
複雜一點的可以設置用來做數據校驗,請求校驗等等。

在spring裏配置Filter,在web.xml添加,

<filter>
    <filter-name>encode</filter-name>
    <filter-class>com.spring.filter.ChineseFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>encode</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


配置完了,啓動服務器的時候就會進入filter-class裏面去

ChineseFilter.java

public class ChineseFilter implements Filter{
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        request.setCharacterEncoding("utf-8");
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("content-type","text/html;charset=utf-8");
        filterChain.doFilter(request, response);
        
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }
    @Override
    public void destroy() {
    }
}
filter-class必須要實現Filter接口,重寫Filter方法,在doFilter裏做你想實現的功能,在代碼的最後如果要寫上FilterChain.doFilter(),他就會跳到下一個filter或者是你請求的資源處。

多個filter就像上面那樣寫,把web.xml  filter-name和filter-class改成自己第二個filter的名字和類的路徑


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章