2019-04-12 cookie基础
cookie
? ? ?作為web服務器,必須能夠采用一種機制來唯一標識一個用戶,同時記錄該用戶的狀態(tài)
?
會話cookie和持久化cookie
cookie.setMaxAge(30) 設置cookie存在的時間
如果不設置過期時間,則表示這個cookie生命周期為瀏覽器會話期間,只要關閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽器會話期的cookie稱為會話cookie。會話cookie一般不保存在硬盤上而是保存在內(nèi)存里。
若果過了設置的時間,瀏覽器就會把cookie保存到硬盤上,關閉后再次打開瀏覽器,這些cookie依然有效直到超過設定的過期時間。
存儲在硬盤上的cookie可以在不不同的瀏覽器進程間共享,比如兩個IE窗口,而對于保存在內(nèi)存的cookie,不同的瀏覽器有不同的處理方式。
?
利用cookie 自動登陸
login.jsp
1 <form action="index.jsp" method="post"> 2 name:<input type="text" name="name"/> 3 <input type="submit" value="Submit"> 4 </form>?
index.jsp
1 <% 2 //若可以獲取到請求的參數(shù)name,則打印出歡迎的信息,把登陸信息存儲到Cookie中,并設置Cookie的最大時效30s 3 String name = request.getParameter("name"); 4 if (name != null && !name.trim().equals("")) { 5 6 Cookie cookie = new Cookie("name", name); 7 cookie.setMaxAge(30); 8 response.addCookie(cookie); 9 } else { 10 //從cookie中讀取用戶信息,若存在則打印歡迎信息 11 Cookie[] cookies = request.getCookies(); 12 if (cookies != null && cookies.length > 0) { 13 for (Cookie cookie : cookies) { 14 String cookieName = cookie.getName(); 15 if ("name".equals(cookieName)) { 16 String val = cookie.getValue(); 17 name = val; 18 } 19 } 20 21 } 22 23 } 24 25 if (name != null && !name.trim().equals("")) { 26 out.print("hello: " + name); 27 } else { 28 //若既沒有請求參數(shù),也沒有Cookie,則重定向到login.jsp 29 response.sendRedirect("login.jsp"); 30 } 31 %>?
利用cookie顯示最近瀏覽的商品
books.jsp
1 <!-- 2 利用 Cookie 實現(xiàn) "您瀏覽過的圖書有: x, y, z", 只顯示最近瀏覽的 3 本圖書的信息 3 且支持 Cookie 的持久化. 其余的 Cookie 被刪除: 調(diào)用其 setMaxAge() 方法, 傳入 4 0 即可。 5 --> 6 7 8 <h4>Books Page</h4> 9 10 <a href="book.jsp?book=JavaWeb">Java Web</a><br><br> 11 <a href="book.jsp?book=Java">Java</a><br><br> 12 <a href="book.jsp?book=Oracle">Oracle</a><br><br> 13 <a href="book.jsp?book=Ajax">Ajax</a><br><br> 14 <a href="book.jsp?book=JavaScript">JavaScript</a><br><br> 15 <a href="book.jsp?book=Android">Android</a><br><br> 16 <a href="book.jsp?book=Jbpm">Jbpm</a><br><br> 17 <a href="book.jsp?book=Struts">Struts</a><br><br> 18 <a href="book.jsp?book=Hibernate">Hibernate</a><br><br> 19 <a href="book.jsp?book=Spring">Spring</a><br><br> 20 21 <br><br> 22 23 <% 24 StringBuilder books = new StringBuilder(""); 25 26 Cookie [] cookies = request.getCookies(); 27 28 if(cookies != null && cookies.length > 0){ 29 30 31 for(Cookie cookie: cookies){ 32 String cookieName = cookie.getName(); 33 String cookieVal = cookie.getValue(); 34 35 if(cookieName.startsWith("book_")){ 36 books.append(cookieVal + " "); 37 } 38 } 39 40 } 41 42 if(!books.toString().equals("")){ 43 out.print("您瀏覽過的商品有: " + books.toString()); 44 } 45 46 %>?
book.jsp
1 <h4>Book Detail Page</h4> 2 3 Book: <%= request.getParameter("book") %> 4 5 <br><br> 6 7 <a href="books.jsp">Return</a> 8 9 <% 10 String book = request.getParameter("book"); 11 Cookie tempCookie = null; 12 13 //只顯示最近瀏覽過的 3 件商品. 14 15 //1. 獲取所有滿足條件的 Cookie 16 List<Cookie> books = new ArrayList<Cookie>(); 17 18 Cookie [] cookies = request.getCookies(); 19 20 if(cookies != null && cookies.length > 0){ 21 22 23 for(Cookie cookie: cookies){ 24 String cookieName = cookie.getName(); 25 26 if(cookieName.startsWith("book_")){ 27 books.add(cookie); 28 29 String cookieVal = cookie.getValue(); 30 if(cookieVal.equals(book)){ 31 tempCookie = cookie; 32 } 33 } 34 } 35 36 } 37 38 if(books.size() == 5){ 39 if(tempCookie == null){ 40 tempCookie = books.get(0); 41 } 42 43 tempCookie.setMaxAge(0); 44 response.addCookie(tempCookie); 45 } 46 47 //2. 在數(shù)組 length == 3 的情況下, 把最早的那個(即數(shù)組的第 1 個元素-下標是 0 的那個元素)刪除 48 Cookie cookie = new Cookie("book_" + book, book); 49 response.addCookie(cookie); 50 %>?
設置cookie的作用路徑
cookie的作用范圍:可以作用當前目錄和當前目錄的子目錄。但不能作用于當前目錄的上一級目錄。
設置cookie的作用范圍
cookie.setPath(request.getContextPath());
request.getContextPath() 這個是動態(tài)的代表web項目地址 如/day_3
可以通過setPath方法來設置cookie的作用域,其中/代表站點的根目錄。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Codinginging/p/10699217.html
總結(jié)
以上是生活随笔為你收集整理的2019-04-12 cookie基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二:SpringAOP
- 下一篇: jQuery的Ajax初识