cookie記錄用戶名和密碼


getAttribute和getParameter的區別:

request.getAttribute():是request時設置的變量的值,用request.setAttribute("name","您自己的值");來設置值,
request.getParameter():提取發送過來的參數如:本網頁

登錄頁面 login.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//判斷是否是錯誤
String error = (String)request.getAttribute("error");
System.out.println("---error---"+ error);

//拿到客戶端攜帶的所有的cookie
String username = "";
String password = "";
//拿到所有的cookie
Cookie[] cs = request.getCookies();
for (int i = 0;cs != null && i < cs.length; i++) {
Cookie c = cs[i];
if(c.getName().equals("name")){
username = c.getValue();
System.out.println("拿到了cookie的用戶名" + username);
}
if(c.getName().equals("password")){
password = c.getValue();
System.out.println("拿到了cookie的密碼" + password);
}

}
//創建頁面
out.write("登錄頁面<br>");
if(error != null){
out.write("<font color=red>" + error +"</font><br>");
}
out.write("<form action='" + request.getContextPath() + "/servlet/rember' method='post' >");
out.write("姓名:<input type='text' name='username' value='"+ username +"'><br><br> ");
out.write("密碼:<input type='password' name='password' value='"+ password +"'><br> ");
out.write("<input type='checkbox' name='remember' value='on'>記住用戶名和密碼兩周<br> ");
out.write("<input type='submit' value='登錄'><br> ");
out.write("</form>");

}

 處理數據頁面:

rember.java

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        //拿到瀏覽器傳遞的數據
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        String remember = request.getParameter("remember");
        System.out.println("----username------" + name);
        System.out.println("----password------" + password);
        System.out.println("----remember------" + remember);
        
        //判斷數據,用戶名=密碼的逆序
        String repassword = new StringBuffer(password).reverse().toString();
        if(name.equals(repassword)){
            //合法用戶
            //判斷是否需要記住
            if("on".equals(remember)){
                Cookie c1 = new Cookie("name",name);
                Cookie c2 = new Cookie("password",password);
                c1.setMaxAge(Integer.MAX_VALUE);
                c2.setMaxAge(Integer.MAX_VALUE);
                //設定訪問路徑
                c1.setPath(request.getContextPath());
                c2.setPath(request.getContextPath());
                //向客戶端發送Cookie
                response.addCookie(c1);
                response.addCookie(c2);            }
            
            request.setAttribute("name", name);
            request.getRequestDispatcher("main").forward(request, response);
        }else{
            //非法用戶
            request.setAttribute("error", "用戶名或者密碼錯誤");
            request.getRequestDispatcher("login").forward(request, response);
        }
    }

登錄后的主頁面:

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String name = (String)request.getAttribute("name");
        System.out.println("---main----name----"+name);
        out.write("歡迎回來 " + name);
    }

登錄,輸入用戶名和密碼,如果勾選了記住用戶名和密碼選項,則將用戶名和密碼放到cookie中,下次登錄則獲取cookie中的用戶名和密碼;

如果用戶名和密碼錯誤,則將錯誤信息通過request對象發送回客戶端。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM