JAVA--高级基础开发Cookie实现记住用户名和密码

前端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);
        }
    }
}
相关文章
相关标签/搜索