`

SpringMVC——interceptor使用

 
阅读更多

Spring 拦截器

    Spring的HandlerMapping 处理器支持拦截器应用。当需要为某些请求提供特殊功能时,例如对用户进行身份认证,或者记录日志,拦截器非常适用。

 

Spring中 定义一个拦截器必须实现HandlerInterceptor接口,这个接口

 

public class MyInterceptor implements HandlerInterceptor {
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// 整个请求处理完毕后调用,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理。
		// 只有preHandle返回true时才会执行afterCompletion方法
	}

	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		// 处理器执行后,视图处理前调用。此时可以通过modelAndView对象对模型进行处理或对视图进行处理
	}

	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2) throws Exception {
		// 处理器执行前被调用。方法返回true表示会继续调用其他拦截器和处理器
		// 返回false表示中断流程,不会执行后续拦截器和处理器
		return false;
	}
}

注意:自定义拦截器时,实现HandlerInterceptor接口需要实现以上3个方法,如果只需要某一个方法可以继承HandlerInterceptorAdapter. 

 

 

定义完拦截器后,接下来就是在配置文件中对拦截器进行配置。

 

	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/demo/*" /><!--要进行拦截的请求-->
			<mvc:exclude-mapping path="/login/*" /><!--不需要进行拦截的请求-->
			<bean class="com.tarena.web.AccessInterceptor" />
		</mvc:interceptor>
		<mvc:interceptor>
			<mvc:mapping path="/**" />
			<mvc:exclude-mapping path="/login/*" />
			<bean class="com.tarena.web.DemoInterceptor" />
		</mvc:interceptor>
	</mvc:interceptors>

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics