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);
        }
    }
}
相關文章
相關標籤/搜索