拦截器的主要作用
完成请求参数的解析,将页面表单参数赋给值栈中相应属性,执行功能检验,程序异常调试等工作。 在MVC设计模式的框架下,拦截器可以对用户的请求进行全局拦截,对多个Controller做拦截,并且常用在用户登录处理、权限检查、记录日志 等方面。 MVC 中的拦截器 (Interceptor) 主要用于对请求进行拦截和处理 ,它可以在请求处理之前或之后执行一些操作,例如记录日志、验证权限、数据校验等。 拦截器可以在控制器方法执行之前或之后执行,也可以在视图渲染之前或之后执行。通过使用拦截器,可以提高应用程序的安全性、性能和可维护性。
场景:验证用户登录是否有效
比如说登录页面的网址是***/login,登录后的主页的网址是***/index,这里的拦截器就是为了防止没有登录的用户/登录过时的用户点击登录后【Ajax请求】直接跳转到主页而设计
拦截Ajax请求
String requestURI = request. getRequestURI ( ) ;
HttpSession session = request. getSession ( ) ;
Object attribute = session. getAttribute ( SessionConstant . SESSION_USER_LOGIN_KEY ) ;
if ( attribute == null ) { log. info ( "用户还未登录或者session失效,重定向到登录页面,当前URL=" + requestURI) ; if ( StringUtil . isAjax ( request) ) { try { response. setCharacterEncoding ( "UTF-8" ) ; response. getWriter ( ) . write ( JSON . toJSONString ( CodeMsg . USER_SESSION_EXPIRED ) ) ; } catch ( IOException e) { e. printStackTrace ( ) ; } return false ; }
拦截其他请求
try { response. sendRedirect ( "/system/login" ) ; } catch ( IOException e) { e. printStackTrace ( ) ; } return false ;
}