本文主要內容:
•1、什么是cookie
•2、cookie帶來的好處
•3、cookie的主要方法
一、什么是cookie
cookie是一種web服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段。cookie的目的就是為用戶帶來方便,為網站帶來增值。雖然有著許多誤傳,事實上cookie并不會造成嚴重的安全威脅。cookie永遠不會以任何方式執(zhí)行,因此也不會帶來病毒或攻擊你的系統(tǒng)。另外,由于瀏覽器一般只允許存放300個cookie,每個站點最多存放20個cookie,每個cookie的大小限制為4kb,因此cookie不會塞滿你的硬盤。
例如,當我們第一次訪問網站輸入用戶名密碼時,可以選擇讓系統(tǒng)記住用戶名密碼,下次就不用重新輸入了,這就是典型的cookie的應用。
二、cookie帶來的好處:
cookies給網站和用戶帶來的好處非常多:
1. cookie能使站點跟蹤特定訪問者的訪問次數(shù)、最后訪問時間等
2. cookie能告訴在線廣告商廣告被點擊的次數(shù),從而可以更精確的投放廣告
3. cookie有效期限未到時,cookie能使用戶在不鍵入密碼和用戶名的情況下進入曾經瀏覽過的一些站點
4. cookie能幫助站點統(tǒng)計用戶個人資料以實現(xiàn)各種各樣的個性化服務在jsp中,我們也可以使用cookie,來編寫一些功能強大的應用程序。
有些瀏覽器可以禁用cookie,所以不能使用cookie來完成核心的業(yè)務。
三、cookie類的主要方法:
int getmaxage() 返回cookie過期之前的最大時間,以秒計算。
int setmaxage() 設置cookie過期時間,以秒計算。
string getname() 返回cookie的名字
string getvalue() 返回cookie的值。
void setvalue(string newvalue) cookie創(chuàng)建后設置一個新的值。
注:名字和值是我們始終關心的兩個部分。稍后會詳細介紹getname/setname、getvalue/setvalue。
四、代碼舉例:
【實例】實現(xiàn)記住密碼、自動登錄的功能
新建javaweb工程test06.
login.jsp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<%@ page language= "java" contenttype= "text/html; charset=utf-8" pageencoding= "utf-8" %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd" > <html> <head> <meta http-equiv= "content-type" content= "text/html; charset=utf-8" > <title>insert title here</title> <% string username = "" ; string password = "" ; //獲取當前站點的所有cookie cookie[] cookies = request.getcookies(); for ( int i = 0 ; i < cookies.length; i++) { //對cookies中的數(shù)據(jù)進行遍歷,找到用戶名、密碼的數(shù)據(jù) if ( "username" .equals(cookies[i].getname())) { username = cookies[i].getvalue(); } else if ( "password" .equals(cookies[i].getname())) { password = cookies[i].getvalue(); } } %> </head> <body> <form action= "login_handler.jsp" method= "post" > username:<input type= "text" name= "name" value= "<%=username%>" /><br/> password:<input type= "password" name= "pwd" value= "<%=password%>" /><br/> <input type= "checkbox" value= "y" name= "islogin" >自動登錄<br/> <input type= "submit" value= "登錄" /> </form> </body> </html> |
13行代碼:獲取當前站點所有的cookie。注:這個cookie類是在接下來的login_handler.jsp文件中定義的。
26行的 value="<%=username%>"
,以及27行的value="<%=password%>"
,是在16行、18行獲取到的值。
login_handler.jsp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<%@ page language= "java" contenttype= "text/html; charset=utf-8" pageencoding= "utf-8" %> <% string name = request.getparameter( "name" ); string pwd = request.getparameter( "pwd" ); string flag = request.getparameter( "islogin" ); if (! "admin" .equals(name) && ! "123" .equals(pwd)) { response.sendredirect( "error.jsp" ); } else { if ( "y" .equals(flag)) { //創(chuàng)建兩個cookie對象 cookie namecookie = new cookie( "username" , name); //設置cookie的有效期為3天 namecookie.setmaxage( 60 * 60 * 24 * 3 ); cookie pwdcookie = new cookie( "password" , pwd); pwdcookie.setmaxage( 60 * 60 * 24 * 3 ); response.addcookie(namecookie); response.addcookie(pwdcookie); } response.sendredirect( "success.jsp" ); } %> |
核心代碼是11行至20行。
11行:如果用戶勾選了“自動登錄”,就把用戶名和密碼的信息放到cookie中。
第15、17行代碼是設置cookie的存儲時間。如果不設置cookie的存儲時間,則默認的存儲時間為0,此時cookie保存的數(shù)據(jù)是存放在內存中的,當瀏覽器關閉,則cookie消失失效。
設置了存儲時間后,此時設置cookie的數(shù)據(jù)將保存在硬盤中,不同的瀏覽器存放的具體位置是不一樣的。
谷歌瀏覽器查看cookie的位置:
“菜單-設置-顯示高級設置-內容設置”:
單擊上圖中的“內容設置”,彈出如下界面:
單擊上圖的紅框部分,彈出如下界面:
success.jsp:
1
2
3
4
5
6
7
8
9
10
11
|
<%@ page language= "java" contenttype= "text/html; charset=utf-8" pageencoding= "utf-8" %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd" > <html> <head> <meta http-equiv= "content-type" content= "text/html; charset=utf-8" > <title>insert title here</title> </head> <body>success. </body> </html> |
如果登陸成功,就調到這個頁面。
error.jsp:
1
2
3
4
5
6
7
8
9
10
11
|
<%@ page language= "java" contenttype= "text/html; charset=utf-8" pageencoding= "utf-8" %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd" > <html> <head> <meta http-equiv= "content-type" content= "text/html; charset=utf-8" > <title>insert title here</title> </head> <body>error. </body> </html> |
運行程序,當輸入正確的用戶名密碼進行登錄,并勾選“記住密碼”后,下次再回到登錄界面,就是下面的這個樣子:
以上所述是小編給大家介紹的javaweb 中cookie實現(xiàn)記住密碼的功能示例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://blog.csdn.net/justdoit_potato/article/details/73739529