切面编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了切面编程相关的知识,希望对你有一定的参考价值。
请求响应拦截器:HandlerInterceptorAdapter
一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理、后处理。
Spring MVC的拦截器不仅可实现Filter的所有功能,还可以更精确的控制拦截精度。
Spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现自己的拦截器。
public class RequestInterceptor extends HandlerInterceptorAdapter{ //可以进行编码、安全控制等处理 //该方法会在Controller的方法执行前会被调用,可以使用这个方法来中断或者继续执行链的处理,当返回true时,处理会继续,当返回false时,则不会去执行Controller的方法。 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } //在代码处理后会调用该方法,那么我们就可以在render view之前往view中添加额外的model对象,或者对view的去处进行修改 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("拦截响应"+modelAndView.getViewName()); super.postHandle(request, response, handler, modelAndView); } //异常处理 @Override public void afterCompletion(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, Object obj, Exception exception) throws Exception { // TODO Auto-generated method stub super.afterCompletion(httpservletrequest, httpservletresponse, obj, exception); } }
在xml配置该拦截器
<mvc:interceptors> <mvc:interceptor> <!-- 默认所有的请求都进行拦截 --> <mvc:mapping path="/*" /> <bean class="com.cn.cis.interceptor.RequestInterceptor" /> </mvc:interceptor> </mvc:interceptors>
本文出自 “13054904” 博客,请务必保留此出处http://13064904.blog.51cto.com/13054904/1979578
以上是关于切面编程的主要内容,如果未能解决你的问题,请参考以下文章