前端JSP頁面: 實現保存用戶名和密碼 <%@ page import="java.net.URLDecoder" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Cookie</title> </head> <body> <div> <% // 用戶名 String user = ""; // 登陸密碼 String pass = ""; // 複選框是否選中 String checked = ""; // 獲取的是請求裏的全部cookie組成的數組 Cookie[] cookies = request.getCookies(); // 若是cookies數組不爲空對其進行遍歷 if (cookies != null && cookies.length > 0) { // 循環遍歷Cookie for (int i = 0; i < cookies.length; i++) { // 獲取Cookie對象 Cookie cookie = cookies[i]; // 將建立的cookie名與獲取的cookie數組中已經存在的cookie名進行比較 if ("name".equals(cookie.getName())) { // "name"是在另外一個jsp文件中建立的cookie名 // 獲取名字叫作"name"的cookie的值 user = URLDecoder.decode(cookie.getValue(), "utf-8"); // 將「記住用戶名」設置爲勾選 checked = "checked"; } // 將建立的cookie名與獲取的cookie數組中已經存在的cookie名進行比較 if ("password".equals(cookie.getName())) { // "password"是在另外一個jsp文件中建立的cookie名 // 獲取名字叫作"password"的cookie的值 pass = cookie.getValue(); } } } %> <h1>用戶登陸</h1> <form action="Login.jsp" method="POST"> <%--<%=user%>指的是將獲取的cookie值放進輸入框內--%> 用戶名:<input type="text" name="username" value="<%=user%>"><br/> 密碼:<input type="password" name="password" value="<%=pass%>"><br/> 記住用戶名和密碼<input type="checkbox" name="rememberme" checked="<%=checked%>"><br> <input type="submit" name="login" value="登陸"/> </form> </div> </body> </html> 後端Servlet驗證: import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/Login3") public class Login3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //設置請求的編碼 req.setCharacterEncoding("utf-8"); //獲取請求中的參數 String name=req.getParameter("name"); String password=req.getParameter("password"); String remember=req.getParameter("remember"); //設置響應的文本信息 resp.setContentType("text/html;charset=UTF-8"); PrintWriter out=resp.getWriter(); //判斷用戶名和密碼是否正確 if(name.equals("Admin")&&password.equals("000000")){ // 新建名爲name的Cookie Cookie nameCookie = new Cookie("name",name); // 新建名爲password的Cookie Cookie passwordCookie = new Cookie("password", password); // 判斷複選框是否被選中,若是選中則返回on if (remember.equals("on")) { // 設置保存Cookie的時間長度, nameCookie.setMaxAge(60*60*24*7); //7天 passwordCookie.setMaxAge(60*60*24*7); } else { // 設置將不保存Cookie nameCookie.setMaxAge(0); passwordCookie.setMaxAge(0); } // 輸出到客戶端 resp.addCookie(nameCookie); resp.addCookie(passwordCookie); // 登陸成功後跳轉到success.jsp req.getRequestDispatcher("success.jsp").forward(req, resp); }else if (!name.equals("Admin") && password.equals("000000")) {// 若是用戶名不正確,密碼正確 // 保存錯誤提示數據 req.setAttribute("error", "用戶名不正確"); // 登陸失敗後將跳轉到error.jsp req.getRequestDispatcher("error.jsp").forward(req, resp); } else if (name.equals("Admin") && !password.equals("000000")) {// 若是用戶名正確,密碼不正確 // 保存錯誤提示數據 req.setAttribute("error", "密碼不正確"); // 登陸失敗後將跳轉到error.jsp req.getRequestDispatcher("error.jsp").forward(req, resp); } else {// 若是用戶名和密碼都不正確 // 保存錯誤提示數據 req.setAttribute("error", "用戶名和密碼都不正確"); // 登陸失敗後將跳轉到error.jsp req.getRequestDispatcher("error.jsp").forward(req, resp); } } }