您的位置:首页 > 编程语言

切面编程(2)

2017-11-07 13:56 99 查看
请求响应拦截器: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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  请求 拦截器 响应