SpringMVC拦截去之HandlerInterceptorAdapter的使用

定义

HandlerInterceptorAdapter是SpringMVC中的拦截器,它是用于拦截URL请求的,主要是为了请求的预处理和后续处理。

使用方法

编写代码

我们只需要自定义一个拦截器去继承HandlerInterceptorAdapter这个抽象类就可以了,这个类提供了三个方法,我们只需要根据自己的业务需求来覆写这个三个方法就可以了

@Component("CustomerInterceptor ")
public class CustomerInterceptor extends HandlerInterceptorAdapter{

	//这方法是在请求未到达Conterller之前进行预处理,
	//如果返回false,就不会继续调用后续的程序,我们不需要利用response来产生响应
	//如果返回true则继续执行后续程序,例如下一个拦截器
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		//处理你自己的业务逻辑
		return true;
	}
	
	//这个方法的执行顺序是请求对应Controller执行完毕之后,但是页面为渲染之前
	//我们可以利用modelAndView来对页面进行额外的处理
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
		//处理你自己的业务逻辑
	}
	
	//这个方法的执行顺序是Controller执行完毕并且页面渲染之后的回调方法
	//类似于try catch finally 里的finally代码块
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
		//处理你自己的业务逻辑
	}
	
	public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		//处理你自己的业务逻辑
	}
}

配置XML

<!--配置拦截器, 多个拦截器,顺序执行 -->  
<mvc:interceptors>    
    <mvc:interceptor>    
        <!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->  
        <mvc:mapping path="/" />  
        <mvc:mapping path="/**" />  
        <!--这个标签标识不会拦截 /login/*的所有请求-->
        <mvn:excloud-mapping="/login/*">
        <bean ref="CustomerInterceptor "/>    
    </mvc:interceptor>  
    <!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->  
</mvc:interceptors> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值