【聲明】 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給網站和用戶帶來的好處很是多:
有些瀏覽器能夠禁用Cookie,因此不能使用Cookie來完成核心的業務。
3、Cookie類的主要方法:
int getMaxAge() 返回Cookie過時以前的最大時間,以秒計算。 int setMaxAge() 設置Cookie過時時間,以秒計算。 String getName() 返回Cookie的名字 String getValue() 返回Cookie的值。 void setValue(String newValue) cookie建立後設置一個新的值。
注:名字和值是咱們始終關心的兩個部分。稍後會詳細介紹getName/setName、getValue/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>
運行程序,當輸入正確的用戶名密碼進行登陸,並勾選「記住密碼」後,下次再回到登陸界面,就是下面的這個樣子: