SpringMVC第11讲:拦截器

源代码

https://download.csdn.net/download/qzc70919700/19927717

一、全局拦截器

springmvc.xml

<!-- 配置拦截器 -->
<mvc:interceptors>
	<!-- 多个拦截器,顺序执行 -->
	<mvc:interceptor>
		<mvc:mapping path="/**"/>
		<bean class="demo.mvc.intercepter.Intercepter1"></bean>
	</mvc:interceptor>
	<mvc:interceptor>
		<mvc:mapping path="/**"/>
		<bean class="demo.mvc.intercepter.Intercepter2"></bean>
	</mvc:interceptor>
</mvc:interceptors>
package demo.mvc.intercepter;

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

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

public class Intercepter1 implements HandlerInterceptor {

	/**
	 * 在处理器映射器之前执行
	 * return false=拦截;true=放行
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("这是第 1 个拦截器Intercepter1 --> preHandle");
		return true;
	}
	
	/**
	 * 还没有调用controller,还没有返回modelAndView时执行
	 */
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("这是第 1 个拦截器Intercepter1 --> postHandle");
	}
	
	/**
	 * 返回modelAndView之后执行
	 */
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("这是第 1 个拦截器Intercepter1 --> afterCompletion");
	}

}
package demo.mvc.intercepter;

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

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

public class Intercepter2 implements HandlerInterceptor {

	/**
	 * 在处理器映射器之前执行
	 * return false=拦截;true=放行
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("这是第 2 个拦截器Intercepter2 --> preHandle");
		return false;
	}
	
	/**
	 * 还没有调用controller,还没有返回modelAndView时执行
	 */
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("这是第 2 个拦截器Intercepter2 --> postHandle");
	}
	
	/**
	 * 返回modelAndView之后执行
	 */
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("这是第 2 个拦截器Intercepter2 --> afterCompletion");
	}

}

二、注意事项

1、如果preHandle返回false,所有拦截器的postHandle都不执行

2、凡是preHandle返回trueafterCompletion必须执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值