美文网首页
filter 与 interceptor

filter 与 interceptor

作者: 吃花生的小猴子 | 来源:发表于2017-12-12 16:18 被阅读0次

    filter

    package javax.servlet;
    
    import java.io.IOException;
    
    
    public interface Filter {
    
        public void init(FilterConfig filterConfig) throws ServletException;
    
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException;
    
        public void destroy();
    }
    

    基于servlet 回调实现

    interceptor

    
    package org.springframework.web.servlet;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.method.HandlerMethod;
    
    public interface HandlerInterceptor {
          
          //前置方法,HandlerMapping 决定映射之后,HandlerAdapter执行invoked the handler之前
        boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception;
          
        //HandlerAdapter 执行invoked the handler之后,DispatcherServlet 渲染view之前
        void postHandle(
                HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
                throws Exception;
    
          //方法完成,渲染veiw之后
        void afterCompletion(
                HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
                throws Exception;
    
    }
    

    基于spring 方法反射实现,类似aop前,中,后通知。

    执行顺序

    Request  ---> Filter  ---> DispactherServlet ---> HandleMapping ---> HandlerInterceptor ---> Controller ---> HandlerInterceptor ---> Filter ---> Response
    

    相关文章

      网友评论

          本文标题:filter 与 interceptor

          本文链接:https://www.haomeiwen.com/subject/aygqixtx.html