拦截器

SpringMVC拦截器(框架独有)
SpringMVC拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理,开发者可以自己定义一些拦截器来实现这些特定功能
过滤器和拦截器的区别:拦截器是AOP思想的具体应用
过滤器、拦截器、监听器
过滤器(Filter)
当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor)
在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
监听器(Listener)
当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。
代码实现

  <mvc:interceptors>
         /  只过滤当前文件下的一个请求  /a
        /** 包括这个请求下所有请求   /a/b/c/d
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.ji.config.LoginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
package com.ji.config;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor{
    //return true会执行下一个拦截器(放行)chain.doFilter(req,resp);
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println ("======================处理前=====================");
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println ("======================处理后=====================");
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println ("======================清理======================");
    }
}
/*
        ======================处理前=====================  //拦截器
        testController方法执行了
        ======================处理后=====================  //拦截日志
        ======================清理======================   //拦截日志
*/

posted @ 2021-11-26 21:25  一刹流云散  阅读(173)  评论(0编辑  收藏  举报