springmvc拦截器实现登录验证 作者:马育民 • 2021-02-22 10:09 • 阅读:10073 需要掌握:[springmvc拦截器](https://www.malaoshi.top/show_1EF5rYIz0e7e.html "springmvc拦截器") # 介绍 访问 Controller 时,**先验证是否登录**: - 如果 **没有登录** 就 **跳转到登录页** - 如果已经登录了,就正常访问 controller,执行添加、编辑、删除等功能 ### 分析 如果不知道拦截器,就需要在每个 **controller中的开始处**,从session中获取当前用户信息,然后做下面判断: - 如果已经存在,就说明已经登录,允许继续访问Controller - 如果不存在,说明没有登录,就跳转到登录页 缺点:在每个 Controller 开始处写这些代码,过于冗余 所以通过springmvc的拦截器来实现 # JAVA代码 ```java public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session=request.getSession(); String username= (String) session.getAttribute("username"); if(username!=null && !"".equals(username)){ return true; } response.sendRedirect("/login.html"); return false; } } ``` # XML配置 实现拦截器类后,还需要配置到xml配置文件中,才能起作用 ```xml ``` **解释:** - ``:表示访问 `/mgr/` 下的资源,及 **子路径** 下的资源,都会 **拦截** 如:`/mgr/list`、`/mgr/user/list` 都会被拦截 - `` 表示不拦截的url: - `/login`:登录Controller,不拦截,否则无法登录 - `/js/**`:该url下都是js,不需要登录校验,所以不拦截 - `/css/**`:该url下都是css,不需要登录校验,所以不拦截 - `/img/**`:该url下都是图片,不需要登录校验,所以不拦截 ### [springmvc拦截器 `/**` 和 `/*` 区别](https://malaoshi.top/show_1IXdZE1U8V1.html "springmvc拦截器 `/**` 和 `/*` 区别") 原文出处:http://malaoshi.top/show_1IXdZjVBX26.html