在一個項目中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的名字和類的路徑