首页 > 代码库 > springMVC之拦截器

springMVC之拦截器

有两种方法配置spring的拦截器

1. 实现接口: HandleInterceptor

public class MyInterceptor1 implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception e) throws Exception {
		System.out.println("最后运行。!!一般用于释放资源。。");
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView model) throws Exception {
		System.out.println("Action运行之后,生成视图之前运行!!");
	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
		System.out.println("action之前运行!

!"); return true; // 继续运行action } }

a)  preHandle

该方法在action运行前运行。能够实现对数据的预处理。比方:编码、安全控制等。

假设方法返回true,则继续运行action。

b)  postHandle

该方法在action运行后,生成视图前运行。在这里。我们有机会改动视图层数据。

c)  afterCompletion

最后运行。通经常使用于释放资源,处理异常。

我们能够依据ex是否为空,来进行相关的异常处理。

由于我们在平时处理异常时,都是从底层向上抛出异常。最后到了spring框架从而到了这种方法中。


2. 继承适配器: HandleInterceptorAdapter

public class MyInterceptor2 extends HandlerInterceptorAdapter {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		System.out.println("MyInterceptor2.preHandle()");
		return true; // 继续运行action
	}

}

3. 配置user-servlet.xml

方案1:

<!-- 配置自己定义拦截器 -->
<mvc:interceptors>
	<bean class="com.zdp.interceptor.MyInterceptor1"></bean> <!-- 拦截全部的url!

--> </mvc:interceptors>

方案2:

<!-- 配置自己定义拦截器 -->
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/user/add" /> <!-- 仅仅拦截加入用户 -->
		<bean class="com.zdp.interceptor.MyInterceptor2"></bean>
	</mvc:interceptor>
</mvc:interceptors>






springMVC之拦截器