MuLeI
做创造价值的人
MuLeI的小站

SpringMVC拦截器

SpringMVC拦截器

SpringMVC拦截器Interceptor

1、SpringMVC拦截器用于对控制其方法进行前置、后置处理

2、拦截器的底层实现技术是AOP

3、拦截器必须实现HandlerInterceptor接口

使用场景

权限控制、登录拦截、字符集管理、国际化等,可以做到不修改原始代码的情况下实现功能

例子

配置文件 applicationContext.xml

<beans ...>
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

实现HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {
    // 运行Controller内方法前执行
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("进入 preHandle 方法..." + request.getRequestURL().toString());
        return true;//返回true,请求会送达Controller方法执行;返回false,请求中断,postHandle方法也不会执行
    }

    // Controller内方法执行完后,视图渲染前执行(得到结果但响应还没真正返回时)
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("进入 postHandle 方法..." + request.getRequestURL().toString());
    }

    // 后置方法,上面两个方法执行完后执行。无论preHandle返回true或false都会执行
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("进入 afterCompletion 方法..." + request.getRequestURL().toString());
    }
}
本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议,转载请注明出处!

发表回复

textsms
account_circle
email

MuLeI的小站

SpringMVC拦截器
SpringMVC拦截器Interceptor
扫描二维码继续阅读
2021-07-03