
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 }