码迷,mamicode.com
首页 > 其他好文 > 详细

切面编程(2)

时间:2017-11-07 14:28:28      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:请求响应拦截器

请求响应拦截器: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

切面编程(2)

标签:请求响应拦截器

原文地址:http://13064904.blog.51cto.com/13054904/1979578

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!