Spring Interceptor

Spring Interceptor相关知识: http://haohaoxuexi.iteye.com/blog/1750680
1.撰写Interceptor
public class TestInterceptor extends HandlerInterceptorAdapter {
	private static Log log = LogFactory.getLog(TestInterceptor.class);
		/**
		 * 顾名思义,该方法将在请求处理之前进行调用
		 */
		public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
	        throws Exception
	    {   
			HttpSession sess = request.getSession();
			sess.setAttribute("Name", "Donald_Draper");
			ServletContext scon= request.getServletContext();
			scon.setAttribute("loginPath", "/login");
			log.info("============preHandle============");
	        return true;
	    }
		/**
		 * 由preHandle 方法的解释我们知道这个方法包括后面要说到的afterCompletion 
		 * 方法都只能是在当前所属的Interceptor 的preHandle 方法的返回值为true 时才能被调用。
		 * postHandle 方法,顾名思义就是在当前请求进行处理之后,也就是Controller 方法调用之后执行,
		 * 但是它会在DispatcherServlet 进行视图返回渲染之前被调用,
		 * 所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
		 */
	    public void postHandle(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, Object obj, ModelAndView modelandview)
	        throws Exception
	    {
	    	log.info("============Name:"+httpservletrequest.getSession().getAttribute("Name"));
	    }
	    /**
	     * 该方法也是需要当前对应的Interceptor 的preHandle 方法的返回值为true 时才会执行。
	     * 顾名思义,该方法将在整个请求结束之后,
	     * 也就是在DispatcherServlet 渲染了对应的视图之后执行。
	     * 这个方法的主要作用是用于进行资源清理工作的。
	     */
	    public void afterCompletion(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, Object obj, Exception exception)
	        throws Exception
	    {
	    	log.info("============loginPath:"+httpservletrequest.getServletContext().getAttribute("loginPath"));
	    }
}

2.配置拦截器
<!-- 访问拦截  --> 
 
<mvc:interceptors>
  		<mvc:interceptor>
		<mvc:mapping path="/**/test/**"/>
			<bean class="com.controller.test.TestInterceptor"/>
		</mvc:interceptor>
	</mvc:interceptors>

3.启动web,访问host:8080/webName/test/charts,控制台输出:
com.fh.controller.test.TestInterceptor-2016-05-31 16:55:15 -19987 INFO    - ============preHandle============
com.fh.controller.test.TestInterceptor-2016-05-31 16:55:15 -20030 INFO    - ============Name:Donald_Draper
com.fh.controller.test.TestInterceptor-2016-05-31 16:55:15 -20281 INFO    - ============loginPath:/login

猜你喜欢

转载自donald-draper.iteye.com/blog/2302215