SpringMVC:拦截器

SpringMVC提供了拦截器机制,它允许目标方法运行前进行一些拦截工作,或者在目标方法运行之后进行一些处理。

拦截器类似于JavaWeb的Filter

拦截器:HandlerInterceptor

1.preHandle方法:在目标方法执行之前调用,返回值为boolean。

返回true,放行

返回false,不放行

2.postHandle方法:在目标方法执行之后调用

3.afterCompletion方法:在整个请求完成,来到目标页面之后(资源响应之后调用)


拦截器测试

1.需要实现HandlerInterceptor接口才

package cn.it.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 1.实现HandlerInterceptor接口
 * 
 * @author Administrator
 *
 */
public class MyInterceptor implements HandlerInterceptor {

	/**
	 * 在目标方法运行前运行
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("MyInterceptor.....preHandle.....");
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("MyInterceptor.....postHandle.....");
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("MyInterceptor.....afterCompletion.....");
	}

}

2.在SpringMVC中配置文件中注册这个拦截器

配置这个拦截器需要拦截哪些请求的目标方法

	<!-- 配置拦截器 -->
	<mvc:interceptors>
		<!-- 1.配置某个拦截器 ,默认拦截所有的请求-->
		<!-- <bean class="cn.it.controller.MyInterceptor"></bean> -->
		
		<!-- 2.更详细的配置某个拦截器 -->
		<mvc:interceptor>
			<!-- 这个拦截器只拦截test01请求 -->
			<mvc:mapping path="/test01"/>
			<bean class="cn.it.controller.MyInterceptor"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

3.拦截器的运行流程

正常运行流程:拦截器的preHandle----->目标方法----->拦截器的postHandle----->目标页面----->拦截器的afterCompletion

其他流程

1.只要preHandle不放行,就没有以后的流程。

2.只要是放行了,afterCompletion一定会执行。不管其他环节有没有异常。


多拦截器测试

多拦截器运行流程(谁先配置谁先执行preHandle):

1.正常运行流程:

和Filter的运行流程一样。

2.异常流程

1.不放行:那块不放行,从此以后都没了。但是前面已经放行的拦截器,它的afterCompletion一定会执行。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值