UserServlet
1 // 登录功能 2 public String login(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException { 3 /* 4 * 封装表单数据到user //校验表单数据 使用service查询 如果不存在 保存错误信息 用户名或密码错误 保存用户数据 为了回显 5 * 如果存在 查看状态 状态为false 保存错误信息 您没有激活 保存表单数据 为了回显 转发到Login.jsp 登录该成功 6 * 保存当前查询出的user到session中 保存当前用户的名称到cookie中 注意中文要编码处理 7 */ 8 // 封装表单数据到user 9 User formUser = CommonUtils.toBean(req.getParameterMap(), User.class); 10 // 校验表单数据 11 Map<String, String> errors = validateLogin(formUser, req.getSession()); 12 if (errors.size() > 0) { 13 req.setAttribute("errors", errors); 14 req.setAttribute("form", formUser); 15 return "f:/jsps/user/regist.jsp"; 16 } 17 // 交给userservice的loginff 18 User user = userService.login(formUser); 19 if (user == null) { 20 req.setAttribute("msg", "用户名或密码错误"); 21 req.setAttribute("user", formUser); 22 return "f:/jsps/user/regist.jsp"; 23 } else { 24 if (!user.isStatus()) { 25 req.setAttribute("msg", "您还没有激活"); 26 req.setAttribute("user", formUser); 27 return "f:/jsps/user/regist.jsp"; 28 29 } else { 30 //保存当前查询出的user到session中 保存当前用户的名称到cookie中 注意中文要编码处理 31 req.getSession().setAttribute("sessionUser", user); 32 String loginname=user.getLoginname(); 33 loginname=URLEncoder.encode(loginname, "utf-8"); 34 Cookie cookie=new Cookie("loginname",loginname); 35 //设置cookie的年龄 否则cookie只在浏览器内存中活 36 cookie.setMaxAge(60*60*24*10); //保存10天 37 resp.addCookie(cookie); 38 return "r:/index.jsp"; 39 40 } 41 } 42 43 }
login.jsp中获取本地cookie 判断回显 与 cookie中拿到的用户是否一致 回显用户的优先级要高
1 <script type="text/javascript"> 2 $(function(){ //Map<String<Cookie名称>,Cookie<cookie本身>> 3 //el表达式先执行 所以若不加双引号 在没有执行javascript之前 已经变成王八啦 所以要加双引号 4 //获取cookie中的用户名 5 var loginname=window.decodeURI("${cookie.loginname.value}"); 6 //获取回显的用户名 7 if("${requestScope.user.loginname}") 8 { 9 loginname="${requestScope.user.loginname}"; 10 } 11 $("#loginame").val(loginname); 12 13 }); 14 </script>
top.jsp中用户登录判断
1 <c:choose> 2 <c:when test="${empty sessionScope.sessionUser}"> 3 <a href="<c:url value='/jsps/user/login.jsp'/>" target="_parent">会员登录</a> | 4 <a href="<c:url value='/jsps/user/regist.jsp'/>" target="_parent">注册会员</a> 5 </c:when> 6 <c:otherwise> 7 会员:${sessionScope.sessionUser.loginname} | 8 <a href="<c:url value='/jsps/cart/list.jsp'/>" target="body">我的购物车</a> | 9 <a href="<c:url value='/jsps/order/list.jsp'/>" target="body">我的订单</a> | 10 <a href="<c:url value='/jsps/user/pwd.jsp'/>" target="body">修改密码</a> | 11 <a href="<c:url value='/jsps/user/login.jsp'/>" target="_parent">退出</a> 12 </c:otherwise> 13 </c:choose>