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 }