JavaWeb學習----Cookie實現記住密碼的功能


【聲明】 

歡迎轉載,但請保留文章原始出處→_→ 

生命壹號:http://www.cnblogs.com/smyhvae/

文章來源:http://www.cnblogs.com/smyhvae/p/4096807.html

 

【正文】

本文主要內容:

•1、什么是Cookie

•2、Cookie帶來的好處

•3、Cookie的主要方法

 

一、什么是Cookie

cookie是一種WEB服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段。Cookie的目的就是為用戶帶來方便,為網站帶來增值。雖然有着許多誤傳,事實上Cookie並不會造成嚴重的安全威脅。Cookie永遠不會以任何方式執行,因此也不會帶來病毒或攻擊你的系統。另外,由於瀏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4KB,因此Cookie不會塞滿你的硬盤。

例如,當我們第一次訪問網站輸入用戶名密碼時,可以選擇讓系統記住用戶名密碼,下次就不用重新輸入了,這就是典型的Cookie的應用。

 

二、Cookie帶來的好處:

cookies給網站和用戶帶來的好處非常多:

  • 1. Cookie能使站點跟蹤特定訪問者的訪問次數、最后訪問時間等
  • 2. Cookie能告訴在線廣告商廣告被點擊的次數,從而可以更精確的投放廣告
  • 3. Cookie有效期限未到時,Cookie能使用戶在不鍵入密碼和用戶名的情況下進入曾經瀏覽過的一些站點
  • 4. Cookie能幫助站點統計用戶個人資料以實現各種各樣的個性化服務在JSP中,我們也可以使用Cookie,來編寫一些功能強大的應用程序。

有些瀏覽器可以禁用Cookie,所以不能使用Cookie來完成核心的業務。

 

三、Cookie類的主要方法:

int getMaxAge() 返回Cookie過期之前的最大時間,以秒計算。
int setMaxAge() 設置Cookie過期時間,以秒計算。 

String getName() 返回Cookie的名字 

String getValue() 返回Cookie的值。
void setValue(String newValue) cookie創建后設置一個新的值。 

注:名字和值是我們始終關心的兩個部分。稍后會詳細介紹getName/setNamegetValue/setValue。

 

四、代碼舉例:

【實例】實現記住密碼、自動登錄的功能

新建JavaWeb工程Test06.

login.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 
 9 <%
10     String username = "";
11     String password = "";
12     //獲取當前站點的所有Cookie
13     Cookie[] cookies = request.getCookies();
14     for (int i = 0; i < cookies.length; i++) {//對cookies中的數據進行遍歷,找到用戶名、密碼的數據
15         if ("username".equals(cookies[i].getName())) {
16             username = cookies[i].getValue();
17         } else if ("password".equals(cookies[i].getName())) {
18             password = cookies[i].getValue();
19         }
20     }
21 %>
22 
23 </head>
24 <body>
25     <form action="login_handler.jsp" method="post">
26         username:<input type="text" name="name" value="<%=username%>" /><br/>
27         password:<input type="password" name="pwd" value="<%=password%>" /><br/>
28         <input type="checkbox" value="y" name="isLogin">自動登錄<br/> 
29         <input type="submit" value="登錄" />
30     </form>
31 </body>
32 </html>

13行代碼:獲取當前站點所有的Cookie。注:這個Cookie類是在接下來的login_handler.jsp文件中定義的。

26行的 value="<%=username%>",以及27行的value="<%=password%>",是在16行、18行獲取到的值。

login_handler.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%
 4     String name = request.getParameter("name");
 5     String pwd = request.getParameter("pwd");
 6     String flag = request.getParameter("isLogin");
 7 
 8     if (!"admin".equals(name) && !"123".equals(pwd)) {
 9         response.sendRedirect("error.jsp");
10     } else {
11         if ("y".equals(flag)) {
12             //創建兩個Cookie對象
13             Cookie nameCookie = new Cookie("username", name);
14             //設置Cookie的有效期為3天
15             nameCookie.setMaxAge(60 * 60 * 24 * 3);
16             Cookie pwdCookie = new Cookie("password", pwd);
17             pwdCookie.setMaxAge(60 * 60 * 24 * 3);
18             response.addCookie(nameCookie);
19             response.addCookie(pwdCookie);
20         }
21         response.sendRedirect("success.jsp");
22     }
23 %>

核心代碼是11行至20行。

11行:如果用戶勾選了“自動登錄”,就把用戶名和密碼的信息放到Cookie中。

第15、17行代碼是設置Cookie的存儲時間。如果不設置Cookie的存儲時間,則默認的存儲時間為0,此時Cookie保存的數據是存放在內存中的,當瀏覽器關閉,則Cookie消失失效。

設置了存儲時間后,此時設置Cookie的數據將保存在硬盤中,不同的瀏覽器存放的具體位置是不一樣的。

谷歌瀏覽器查看cookie的位置:

“菜單-設置-顯示高級設置-內容設置”:

單擊上圖中的“內容設置”,彈出如下界面:

單擊上圖的紅框部分,彈出如下界面:

success.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>success.
10 </body>
11 </html> 

如果登陸成功,就調到這個頁面。

error.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>error.
10 </body>
11 </html>

運行程序,當輸入正確的用戶名密碼進行登錄,並勾選“記住密碼”后,下次再回到登錄界面,就是下面的這個樣子:

 


免責聲明!

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



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