使用者登入模組 - 5 勾選:記住使用者名稱
阿新 • • 發佈:2020-12-06
JavaWeb綜合案例 - 使用者登入:6 勾選 - 記住使用者名稱
勾選後再次訪問顯示使用者名稱
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>使用者登入</title> </head> <body> <form action="${pageContext.request.contextPath}/loginServlet" method="post"> 使用者名稱:<input type="text" name="username" value="${cookie.rememberMe.value}"><br> 密碼: <input type="password" name="password"><br> 記住使用者名稱: <input type="checkbox" name="rememberMe" value="yes"><br> <input type="submit" value="登入"><br> <div style="color: red"> <%--顯示登入錯誤資訊--%> ${msg} </div> </form> </body> </html>
LoginServlet
package com.itheima.web; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; @WebServlet("/loginServlet") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1. 設定請求編碼 request.setCharacterEncoding("UTF-8"); //2. 獲取使用者名稱和密碼 String username = request.getParameter("username"); String password = request.getParameter("password"); //3. 判斷使用者名稱或密碼是否正確 if ("jack".equals(username) && "1234".equals(password)) { // 登入成功了. 存入Session域中,可以在一次會話多次請求之間共享資料 request.getSession().setAttribute("username", username); //---------記住使用者名稱 start------------- //1. 獲取是否勾選了"記住使用者名稱" String rememberMe = request.getParameter("rememberMe"); //2. 判斷是否為 yes if("yes".equals(rememberMe)){ // 勾選了 Cookie rememberMeCookie = new Cookie("rememberMe",username); rememberMeCookie.setMaxAge(7*24*60*60); response.addCookie(rememberMeCookie); } //---------記住使用者名稱 end------------- // 重定向: 瀏覽器位址列發生了改變,可以防止重複登入 response.sendRedirect(request.getContextPath() + "/login.jsp"); return; } // 登入失敗 // 將錯誤資訊存入請求域中 request.setAttribute("msg", "使用者名稱或密碼錯誤~"); // 轉發到登入頁面,顯示錯誤資訊 request.getRequestDispatcher("/login.jsp").forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }