切面编程

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

以上是关于切面编程的主要内容,如果未能解决你的问题,请参考以下文章

AOP 面向切面编程

java怎么运用切面编程生成日志

Spring的AOP面向切面编程

面向切面编程

面向切面编程

Spring面向切面编程