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     }
复制代码

 

posted @   yub4by  阅读(94)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示