后台代码登陆成功以后将user存在session中
1 @RequestMapping("login") 2 @ResponseBody 3 public String login( HttpSession session, User user, String code){ 4 Map<String, String> map = new HashMap<String, String>(); 5 String codes = (String) session.getAttribute("code"); 6 // 7 if (codes.equalsIgnoreCase(code)) { 8 Md5Util m = new Md5Util(); 9 String pwd = m.GetMD5(user.getPwd()); 10 User user2 = loginService.loginUser(user.getUserName(),pwd); 11 if (user2!=null) { 12 session.setAttribute("user", user2); 13 map.put("flg", "ok"); 14 } else { 15 map.put("flg", "error"); 16 } 17 } else{ 18 session.setAttribute("loginError", "验证码不一致"); 19 map.put("flg", "error"); 20 } 21 Gson gson = new Gson(); 22 String json = gson.toJson(map); 23 return json; 24 25 26 27 } 28 29 30
springmvc-servlet ssm核心配置文件 添加配置
1 <mvc:interceptors> 2 <mvc:interceptor> 3 <!-- 拦截的路径 /** 表示拦截所有请求 拦截的时候,path一定要有 /--> 4 <mvc:mapping path="/**"/> 5 <!-- 哪些路径不被拦截 --> 6 <mvc:exclude-mapping path="/login"/> 7 <mvc:exclude-mapping path="/code"/> 8 <!-- 配置一个拦截器 配置一个class --> 9 <bean class="com.demo.interceptor.MyInterceptor"></bean> 10 </mvc:interceptor> 11 </mvc:interceptors>
编写一个拦截器 判断session中有没有值
1 package com.demo.interceptor; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 6 import org.springframework.web.servlet.HandlerInterceptor; 7 import org.springframework.web.servlet.ModelAndView; 8 9 import com.demo.pojo.User; 10 11 12 13 public class MyInterceptor implements HandlerInterceptor { 14 /** 15 * 执行完postHandle,才会执行afterCompletion。 16 */ 17 @Override 18 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) 19 throws Exception { 20 // System.out.println("afterCompletion"); 21 // System.out.println(arg2); 22 // System.out.println(arg3); 23 // System.out.println("-----------------------"); 24 } 25 26 /** 27 * 如果preHandle 返回true,则会执行postHandle方法。 28 */ 29 @Override 30 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) 31 throws Exception { 32 // System.out.println("postHandle"); 33 // System.out.println(arg2); 34 } 35 36 /** 37 * preHandle 请求到达controller之前。 38 */ 39 @Override 40 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { 41 // System.out.println("preHandle"); 42 // 先取得值!如果登录了,则会有值,并且还要将值存储到session中。 从session中取得值。 43 // 取得到url的地址 相当于取得到 http://localhost:8080/08springmvc/login 地址 44 // String url = request.getRequestURI(); 45 // System.out.println(url); 46 47 // 取得session中的值。如果没有则不放行! 48 User user = (User) request.getSession().getAttribute("user"); 49 50 if (user != null) { 51 return true; 52 } 53 // 如果全部都是false,则继续登录 54 request.getRequestDispatcher("login.jsp").forward(request, response); 55 return false; 56 } 57 }