Goods:登录页面之登录功能的实现

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> |&nbsp; 
 4      <a href="<c:url value='/jsps/user/regist.jsp'/>" target="_parent">注册会员</a>
 5             </c:when>
 6             <c:otherwise>
 7                会员:${sessionScope.sessionUser.loginname}&nbsp;&nbsp;|&nbsp;&nbsp;
 8           <a href="<c:url value='/jsps/cart/list.jsp'/>" target="body">我的购物车</a>&nbsp;&nbsp;|&nbsp;&nbsp;
 9           <a href="<c:url value='/jsps/order/list.jsp'/>" target="body">我的订单</a>&nbsp;&nbsp;|&nbsp;&nbsp;
10           <a href="<c:url value='/jsps/user/pwd.jsp'/>" target="body">修改密码</a>&nbsp;&nbsp;|&nbsp;&nbsp;
11           <a href="<c:url value='/jsps/user/login.jsp'/>" target="_parent">退出</a>
12             </c:otherwise>
13         </c:choose>
原文地址:https://www.cnblogs.com/xiaoying1245970347/p/4769882.html