Spring的HandlerMapping支持拦截器,拦截器必须实现HandlerInterceptor接口,此接口里面有下面3中方法:
1.preHandle()处理器执行前被调用,方法返回true标识继续调用其他拦截器或者处理器,返回false表示中断流程,后续的拦截器和处理器不再执行。
2.postHandle()处理器执行后,视图执行前调用,此时而已通过ModelAndView对象对数据模型数据进行处理或对视图进行处理。
3.afterCompletion()整个过程结束后调用,比如性能监控中我们在这里可以记录结束时间并输出消耗的时间,也可以在这里写对资源的清理,但是只有preHandle()返回true时才会执行afterCompletion方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class someInterceptor implements HandlerInterceptor{ public boolean preHandle(HttpServletRequest req,HttpServletResponse resp,Object handler) throws Exception{ //TODO 处理器执行前被调用 return true ; } publilc void postHandle(HttpServletRequest req,HttpServletResponse resp,Object handler,ModelAndView mv) throws Exception{ //TODO 处理器执行后被调用 } public void afterCompletion(HttpServletRequest req,HttpServletResponse resp,Object handler,Exception e) throws Exception{ //TODO全部执行完成后调用 } } |
这个自定义的拦截器实现HandlerInterceptor接口就要实现接口里所有的方法,如果只想使用某一种方法,可以继承HandlerInterceptorAdapter.
拦截器的配置
1
2
3
4
5
6
7
|
< mvc:interceptors > < mvc:interceptor > < mvc:mapping path = "/org/*" /> < mvc:exclude-mapping path = "/login/*" /> < bean class = "org.vipcpi.interceprot.someInterceptor" /> </ mvc:interceptor > </ mvc:interceptors > |
总结
以上就是本文关于Spring拦截器HandlerInterceptor接口代码解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/sinat_15274667/article/details/51585540