SSM7.2【Spring:SpringMVC拦截器interceptor案例-用户登录权限控制】
1 package com.haifei.interceptor; 2 3 import com.haifei.domain.User; 4 import org.springframework.web.servlet.HandlerInterceptor; 5 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 import javax.servlet.http.HttpSession; 9 10 public class PrivilegeInterceptor implements HandlerInterceptor { 11 12 @Override 13 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 14 //逻辑:判断用户是否登录 本质:判断session中有没有user 15 16 HttpSession session = request.getSession(); 17 User user = (User) session.getAttribute("user"); 18 if(user==null){ 19 //未登录 --> 重定向到登录页面 20 response.sendRedirect(request.getContextPath()+"/login.jsp"); 21 return false; 22 }else { 23 //已登录 --> 放行,允许访问目标资源 24 return true; 25 } 26 } 27 28 }
1 spring-mvc.xml 2 3 + 4 5 <!--配置权限拦截器--> 6 <mvc:interceptors> 7 <mvc:interceptor> 8 <!--配置对哪些资源执行拦截操作--> 9 <mvc:mapping path="/**"/> 10 <!--配置哪些资源排除拦截操作--> 11 <mvc:exclude-mapping path="/user/login"/> 12 <bean class="com.haifei.interceptor.PrivilegeInterceptor"/> 13 </mvc:interceptor> 14 </mvc:interceptors>
1 UserController 2 3 + 4 5 @RequestMapping("/login") 6 public String login(String username, String password, HttpSession session){ 7 User user = userService.login(username, password); 8 if (user != null){ 9 //登录成功,将user存储到session 10 session.setAttribute("user", user); 11 return "redirect:/index.jsp"; 12 }else { 13 //登录失败 14 return "redirect:/login.jsp"; 15 } 16 }
1 UserService 2 3 + 4 5 User login(String username, String password);
1 UserServiceImpl 2 3 + 4 5 @Override 6 public User login(String username, String password) { 7 User user = null; 8 try { 9 user = userDao.findByUsernmeAndPassword(username, password); 10 } catch (EmptyResultDataAccessException e) { 11 // e.printStackTrace(); 12 } 13 return user; 14 }
1 UserDao 2 3 + 4 5 User findByUsernmeAndPassword(String username, String password);
1 UserDaoImpl 2 3 + 4 5 @Override 6 public User findByUsernmeAndPassword(String username, String password) throws EmptyResultDataAccessException { 7 String sql = "select * from sys_user where username=? and password=?"; 8 User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password); 9 return user; 10 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!