package com.panshi.project interceptor.interceptor; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.spring framework.stereotype.com ponent; importorg.spring framework.util.string utils; importorg.spring framework.web.servlet.modelandview; importorg.spring framework.web.servlet.handler.handlerinterceptoradapter; import javax.servlet.http.http servlet请求; import javax.servlet.http.http无servlet保罗; 导入javax.servlet.http.http session;
@ componentpublicclassrecordinterceptorextendshandlerinterceptoradapter { privatefinalstaticloggerlogger=logger factory.get
* SpringMVC的拦截器是链式的,可以同时有多个拦截器。
*然后,SpringMVC将按照声明前后的顺序一个接一个地运行。
*此外,所有Interceptor的preHandle方法都是在调用控制器方法之前调用的。
* SpringMVC的这种Interceptor链结构也可以中断,
*该中断方式使preHandle的返回值为false,在preHandle的返回值为false时整个请求结束。 //@ overridepublicbooleanprehandle (httpservletrequestrequest,http servlet response,Object handler ) throwsexceptition
logger.info ('阻止: ' request.getRequestURI ) );
htpsessionsession=request.getsession (; if (! string utils.isempty (session.getattribute (' userid ' ) ),相关验证
*/
返回真;
}else{
response.sendredirect ()/logins ); 返回假;
//return super.pre handle (请求,响应,处理程序);
}/***此方法仅在当前此Interceptor的preHandle方法的返回值为true时执行。
* postHandle用于阻止处理器,在处理器进行处理后(即在控制器的方法调用后)执行。
*但是,dispatcher servlet将在渲染视图之前运行。 也就是说,此方法允许您操作ModelAndView。
*此方法的链结构与常规访问的方向相反。 也就是说,前面声明的Interceptor拦截器将相反地调用方法。
*这类似于Struts2拦截器的运行过程。
只需手动调用Struts2中的intercept方法中的action invocation invoke方法,
*在* Struts2中调用ActionInvocation的invoke方法是调用以下Interceptor或action :
*然后,在Interceptor之前调用的所有内容都写在调用invoke之前,在Interceptor之后调用的所有内容都写在调用invoke方法之后。 //@ overridepublicvoidposthandle (httpservletrequestrequest,HttpServletResponse response,对象处理程序,modelandviewmodder
}/***此方法也仅在当前相应的interceptor pre handle方法的返回值必须为true时执行。
*此方法在整个请求完成后,即DispatcherServlet渲染视图执行。 此方法的主要作用是清理资源。 */@ overridepublicvoidaftercompletion (httpservletrequestrequest,HttpServletResponse response,对象处理程序,exception ense
}
}