JavaWeb 中Cookie實(shí)現(xiàn)記住密碼的功能示例
本文主要內(nèi)容:
•1、什么是Cookie
•2、Cookie帶來的好處
•3、Cookie的主要方法
一、什么是Cookie
cookie是一種WEB服務(wù)器通過瀏覽器在訪問者的硬盤上存儲信息的手段。Cookie的目的就是為用戶帶來方便,為網(wǎng)站帶來增值。雖然有著許多誤傳,事實(shí)上Cookie并不會造成嚴(yán)重的安全威脅。Cookie永遠(yuǎn)不會以任何方式執(zhí)行,因此也不會帶來病毒或攻擊你的系統(tǒng)。另外,由于瀏覽器一般只允許存放300個Cookie,每個站點(diǎn)最多存放20個Cookie,每個Cookie的大小限制為4KB,因此Cookie不會塞滿你的硬盤。
例如,當(dāng)我們第一次訪問網(wǎng)站輸入用戶名密碼時,可以選擇讓系統(tǒng)記住用戶名密碼,下次就不用重新輸入了,這就是典型的Cookie的應(yīng)用。
二、Cookie帶來的好處:
cookies給網(wǎng)站和用戶帶來的好處非常多:
1. Cookie能使站點(diǎn)跟蹤特定訪問者的訪問次數(shù)、最后訪問時間等
2. Cookie能告訴在線廣告商廣告被點(diǎn)擊的次數(shù),從而可以更精確的投放廣告
3. Cookie有效期限未到時,Cookie能使用戶在不鍵入密碼和用戶名的情況下進(jìn)入曾經(jīng)瀏覽過的一些站點(diǎn)
4. Cookie能幫助站點(diǎn)統(tǒng)計用戶個人資料以實(shí)現(xiàn)各種各樣的個性化服務(wù)在JSP中,我們也可以使用Cookie,來編寫一些功能強(qiáng)大的應(yīng)用程序。
有些瀏覽器可以禁用Cookie,所以不能使用Cookie來完成核心的業(yè)務(wù)。
三、Cookie類的主要方法:
int getMaxAge() 返回Cookie過期之前的最大時間,以秒計算。
int setMaxAge() 設(shè)置Cookie過期時間,以秒計算。
String getName() 返回Cookie的名字
String getValue() 返回Cookie的值。
void setValue(String newValue) cookie創(chuàng)建后設(shè)置一個新的值。
注:名字和值是我們始終關(guān)心的兩個部分。稍后會詳細(xì)介紹getName/setName、getValue/setValue。
四、代碼舉例:
【實(shí)例】實(shí)現(xiàn)記住密碼、自動登錄的功能
新建JavaWeb工程Test06.
login.jsp:
<%@ 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 = "";
//獲取當(dāng)前站點(diǎn)的所有Cookie
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {//對cookies中的數(shù)據(jù)進(jìn)行遍歷,找到用戶名、密碼的數(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行代碼:獲取當(dāng)前站點(diǎn)所有的Cookie。注:這個Cookie類是在接下來的login_handler.jsp文件中定義的。
26行的 value="<%=username%>",以及27行的value="<%=password%>",是在16行、18行獲取到的值。
login_handler.jsp:
<%@ 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);
//設(shè)置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行代碼是設(shè)置Cookie的存儲時間。如果不設(shè)置Cookie的存儲時間,則默認(rèn)的存儲時間為0,此時Cookie保存的數(shù)據(jù)是存放在內(nèi)存中的,當(dāng)瀏覽器關(guān)閉,則Cookie消失失效。
設(shè)置了存儲時間后,此時設(shè)置Cookie的數(shù)據(jù)將保存在硬盤中,不同的瀏覽器存放的具體位置是不一樣的。
谷歌瀏覽器查看cookie的位置:
“菜單-設(shè)置-顯示高級設(shè)置-內(nèi)容設(shè)置”:

單擊上圖中的“內(nèi)容設(shè)置”,彈出如下界面:

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

success.jsp:
<%@ 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>
如果登陸成功,就調(diào)到這個頁面。
error.jsp:
<%@ 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>
運(yùn)行程序,當(dāng)輸入正確的用戶名密碼進(jìn)行登錄,并勾選“記住密碼”后,下次再回到登錄界面,就是下面的這個樣子:

以上所述是小編給大家介紹的JavaWeb 中Cookie實(shí)現(xiàn)記住密碼的功能示例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 如何使用會話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證
- Java后端Cookie實(shí)現(xiàn)(時間戳)代碼實(shí)例
- Java接口測試Cookie與token原理解析
- Java 模擬cookie登陸簡單操作示例
- 在java中http請求帶cookie的例子
- Java 對 Cookie增刪改查的實(shí)現(xiàn)示例
- Java Web學(xué)習(xí)之Cookie和Session的深入理解
- java使用Cookie判斷用戶登錄情況的方法
- servlet之cookie簡介_動力節(jié)點(diǎn)Java學(xué)院整理
- java中Servlet Cookie取不到值原因解決辦法
- JavaWeb使用Session和Cookie實(shí)現(xiàn)登錄認(rèn)證
- Cookie在Java中的使用
相關(guān)文章
Java使用PDFBox實(shí)現(xiàn)操作PDF文檔
這篇文章主要為大家詳細(xì)介紹了Java如何使用PDFBox實(shí)現(xiàn)操作PDF文檔,例如添加本地圖片、添加網(wǎng)絡(luò)圖片、圖片寬高自適應(yīng)、圖片水平垂直居中對齊等功能,需要的可以了解下2024-03-03
TransmittableThreadLocal通過javaAgent實(shí)現(xiàn)線程傳遞并支持ForkJoin
這篇文章主要介紹了TransmittableThreadLocal通過javaAgent實(shí)現(xiàn)線程傳遞并支持ForkJoin詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
SpringBoot程序打包失敗(.jar中沒有主清單屬性)
在學(xué)習(xí)SpringBoot,打包SpringBoot程序后,在cmd運(yùn)行出現(xiàn)了 某某某.jar中沒有注清單屬性,本文就來介紹一下原因以及解決方法,感興趣的可以了解一下2023-06-06
SpringBoot 入門教程之引入數(shù)據(jù)傳輸層的方法
這篇文章主要介紹了SpringBoot 入門教程之引入數(shù)據(jù)傳輸層的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
SpringBoot+WebMagic+MyBaties實(shí)現(xiàn)爬蟲和數(shù)據(jù)入庫的示例
WebMagic是一個開源爬蟲框架,本項目通過在SpringBoot項目中使用WebMagic去抓取數(shù)據(jù),最后使用MyBatis將數(shù)據(jù)入庫。具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10

