Spring MVC 也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现 HandlerInterceptor 接口
– preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回 true;如果程序员决定不需要再调用其他的组件去处理请求,则返回 false。
– postHandle():这个方法在业务处理器处理完请求后,但是 DispatcherServlet 向客户端返回响应前被调用,在该方法中对用户请求 request 进行处理。
– afterCompletion():这个方法在 DispatcherServlet 完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。
测试代码:
首先新建一个拦截器 FirstInterceptor
配置自定义的拦截器:可以在
<mvc:interceptors></mvc:interceptors>
中加一个<mvc:interceptor></mvc:interceptor>
里面会有一个<mvc:mapping path=""/>
可以自定义路径
eg:<mvc:interceptors> <bean class="com.SpringMVC.interceptor.FirstInterceptor"></bean> <mvc:interceptor> <mvc:mapping path="/emps"/> <bean class="com.SpringMVC.interceptor.SecondInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
如上图配置了两个拦截器后,执行顺序为:
当第二个拦截器 SecondInterceptor 中 preHandle 方法汇总 return 的值为 false 的时候 执行顺序为:
实线为被执行的顺序,虚线为不执行
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于