spring 攔截器和過濾器的訪問順序
阿新 • • 發佈:2019-01-27
具體訪問順序為 先過濾器 後攔截器
測試:
過濾器寫法
攔截器寫法package com.buaa.nstri.common.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import com.buaa.nstri.common.safe.XssHttpServletRequestWrapper; /** * 該過濾器提供ContextPath以及其他攔截器做不了的事情 * @author manta * */ public class DefaultFilter implements Filter{ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { setContext((HttpServletRequest)request); //------------------------ System.out.println("filter"); chain.doFilter(new XssHttpServletRequestWrapper( (HttpServletRequest) request), response); } @Override public void destroy() { } @Override public void init(FilterConfig arg0) throws ServletException { } /** * @param request * request中放ContextPath的內容 */ private void setContext(HttpServletRequest request) { if(request.getContextPath()!=null){ request.setAttribute("ContextPath", request.getContextPath()); } } }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { //這裡可以設定一些預設的引數值 System.out.println("out"); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { //這裡可以設定一些預設的引數值 System.out.println("in"); return super.preHandle(request, response, handler); }
輸出為:
filter
in
out