前端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); } } }