req.getSession().setAttribute("user",loginUser);//保存用户信息到Sesion域中,为了登陆后显示用户名
1 /** 2 * 处理登录功能 3 */ 4 protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ 5 6 7 //1、获取请求的参数 8 String username = req.getParameter("username"); 9 String password = req.getParameter("password"); 10 11 // 2、调用XXXService.xxx()处理业务/userService.log()登录 12 //判断用户名是否存在 13 if(userService.existUsername(username)){ 14 // userService.login(new User(null,username,password,null)); 15 User loginUser = userService.login(new User(null,username,password,null)); 16 //3、根据login()方法返回结果判断登录是否成功 17 if(loginUser != null) { 18 19 //Ⅰ、成功 20 System.out.println("login success"); 21 22 //保存用户信息到Sesion域中,为了登陆后显示用户名 23 req.getSession().setAttribute("user",loginUser); 24 25 //跳到登录成功页面 26 req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req,resp); 27 }else { 28 // 29 // Ⅱ、失败 30 System.out.println("login failed"); 31 //把错误信息和回显信息保存到Resquest域中 32 req.setAttribute("loginError","用户名或密码错误"); 33 req.setAttribute("username",username); 34 // 35 // 跳回登录页面 36 req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp); 37 } 38 }else{ 39 System.out.println("用户名["+username+"]不存在,请先注册"); 40 req.setAttribute("loginError","用户名不存在"); 41 req.setAttribute("username",username); 42 // 跳回登录页面 43 req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp); 44 } 45 46 }
"${sessionScope.user.username}"
1 <%--如果用户没有登陆,显示登录和注册--%> 2 <c:if test="${empty sessionScope.user}"> 3 <a href="pages/user/login.jsp">登录</a> | 4 <a href="pages/user/regist.jsp">注册</a> 5 </c:if> 6 7 <%--如果用户已经登陆,则显示登录成功之后的用户信息--%> 8 <c:if test="${not empty sessionScope.user}"> 9 <span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临书城</span> 10 <a href="pages/order/order.jsp">我的订单</a> 11 <a href="index.jsp">注销</a> 12 </c:if>
1、销毁Session中用户的登录信息(或者销毁Session)
2、重定向到首页或者登陆页面。
Ⅰ、在UserServlet.java中添加用户注销方法logout();。
1 /** 2 * 处理注销功能 3 */ 4 protected void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ 5 6 //1、销毁Session中用户的登录信息(或者销毁Session) 7 req.getSession().invalidate(); 8 //2、重定向到首页或者登陆页面。 9 resp.sendRedirect(req.getContextPath()); //到首页 10 11 12 }
Ⅱ、前端用 <a href="userServlet?action=logout">注销</a> 访问注销
表单重复提交有三种常见的情况:
一:提交完表单。服务器使用请求转来进行页面跳转。这个时候,用户按下功能键 F5,就会发起最后一次的请求。
造成表单重复提交问题。解决方法:使用重定向来进行跳转
二:用户正常提交服务器,但是由于网络延迟等原因,迟迟未收到服务器的响应,这个时候,用户以为提交失败,
就会着急,然后多点了几次提交操作,也会造成表单重复提交。
三:用户正常提交服务器。服务器也没有延迟,但是提交完成后,用户回退浏览器。重新提交。也会造成表单重复提交。
D14 Sping Boot 入门 Sping框架--Java Web之书城项目(五)
原文:https://www.cnblogs.com/nuister/p/12679887.html