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

【聲明】 html

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

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

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

 

【正文】服務器

本文主要內容:cookie

•一、什麼是Cookiejsp

•二、Cookie帶來的好處post

•三、Cookie的主要方法網站

 

1、什麼是Cookieui

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

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

 

2、Cookie帶來的好處:

cookies給網站和用戶帶來的好處很是多:

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

有些瀏覽器能夠禁用Cookie,因此不能使用Cookie來完成核心的業務。

 

3、Cookie類的主要方法:

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

String getName() 返回Cookie的名字 

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

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

 

4、代碼舉例:

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

新建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中。

第1五、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>

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

相關文章
相關標籤/搜索