偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳細(xì)介紹Jsp中的Cookies

開(kāi)發(fā) 后端
本文介紹的是JSP中的cookies,希望對(duì)你有幫助,一起來(lái)看。

在開(kāi)發(fā)網(wǎng)站應(yīng)用程序的過(guò)程中,使用cookie記錄用戶(hù)的一些信息是比較常用的一種方法,而cookie的使用也非常簡(jiǎn)單。

一、Cookie是通過(guò)HttpServletResponse的addCookie方法加入到Set-Cookie應(yīng)答頭中的

例如:

  1. Cookie userCookie = new Cookie("user""admin");   
  2. response.addCookie(userCookie); 

和設(shè)置有關(guān)系的還有以下兩個(gè)重要方法

1.setMaxAge

設(shè)置Cookie過(guò)期之前的時(shí)間,以秒計(jì)。如果不設(shè)置該值,則Cookie只在當(dāng)前會(huì)話(huà)內(nèi)有效,而且這些Cookie不會(huì)保存到磁盤(pán)上。

注意:刪除cookie就是通過(guò)該方法實(shí)現(xiàn)的。將要?jiǎng)h除的cookie的過(guò)期之前的時(shí)間指定為0就可以達(dá)到刪除該cookie的目的。

2.setPath

設(shè)置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當(dāng)前頁(yè)面(jsp(SUN企業(yè)級(jí)應(yīng)用的***)頁(yè)面或者Servlet的映射)所在目錄及其子目錄下的所有頁(yè)面。

注意:

A:所有的cookie都是有路徑的

B:該方法設(shè)置的路徑為客戶(hù)端路徑,即“/”代表服務(wù)器根目錄,而不是WEB應(yīng)用根目錄

C:該方法設(shè)置路徑時(shí),“/myWeb/”與“/myWeb”是不同的,要特別注意;前者可以關(guān)聯(lián)到服務(wù)器的myWeb目錄下,而后者則不可以。

D:該方法設(shè)置路徑時(shí),沒(méi)有相對(duì)目錄可言,即不論在哪個(gè)目錄下設(shè)置setPath(“/myWeb/”),該cookie都將關(guān)聯(lián)到服務(wù)器的myWeb目錄下(setPath(“/myWeb”)則不可以),而不是當(dāng)前目錄的myWeb的子目錄下;同樣,設(shè)置setPath(“myWeb/”)和setPath(“myWeb”)也不能關(guān)聯(lián)到當(dāng)前目錄的myWeb的子目錄下。

這里有個(gè)奇怪的例子,就是在一個(gè)web應(yīng)用下設(shè)置的cookie可以在另一個(gè)web應(yīng)用下獲得(兩個(gè)web應(yīng)用在同一個(gè)服務(wù)器下)
目錄結(jié)構(gòu):在服務(wù)器根目錄上有web1和web2兩個(gè)目錄,在web1下有setcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)和getcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)、在web2下有g(shù)etcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)

web1下的setcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)

  1. <%  
  2. Cookie userCookie = new Cookie("user""admin");   
  3. userCookie.setMaxAge(24*60*60);  
  4. userCookie.setPath("/web2/");  
  5. response.addCookie(userCookie);  
  6. %> 

web1下的getcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)

  1. <%  
  2. Cookie[] cookie = request.getCookies();  
  3. String user = new String();  
  4. if ( cookie != null ) {  
  5. for (int i = 0; i < cookie.length; i++) {  
  6. Cookie myCookie = cookie[i];  
  7. if (myCookie.getName().equals("user")) {  
  8. user = myCookie.getValue();  
  9. }  
  10. }  
  11. }  
  12. out.println("user = " + user);  
  13. %>  
  14. web2下的getcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)  
  15. <%  
  16. Cookie[] cookie = request.getCookies();  
  17. String user = new String();  
  18. if ( cookie != null ) {  
  19. for (int i = 0; i < cookie.length; i++) {  
  20. Cookie myCookie = cookie[i];  
  21. if (myCookie.getName().equals("user")) {  
  22. user = myCookie.getValue();  
  23. }  
  24. }  
  25. }  
  26. out.println("user = " + user);  
  27. %> 

先訪問(wèn)web1下的setcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***),然后分別訪問(wèn)web1和web2下面的getcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)文件,你會(huì)發(fā)現(xiàn)奇怪的現(xiàn)象,web1下的getcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)中user為空而web2下的getcookie.jsp(SUN企業(yè)級(jí)應(yīng)用的***)中user卻有值,這就實(shí)現(xiàn)了從一個(gè)web應(yīng)用下設(shè)置的cookie在另一個(gè)web應(yīng)用下獲得。

大多數(shù)人刪除cookie不成功都是因?yàn)槟夸浽颉R粋€(gè)典型的原因是在某一個(gè)目錄中設(shè)置了cookie(沒(méi)有調(diào)用setPath方法)卻在另一個(gè)目錄中刪除該cookie(其實(shí)是調(diào)用setMaxAge方法)

3、跨域共享cookie的方法:設(shè)置

  1. cookie.setDomain(".jszx.com"); 

A機(jī)所在的域:home.langchao.com,A有應(yīng)用cas

B機(jī)所在的域:jszx.com,B有應(yīng)用webapp_b

1)在cas下面設(shè)置cookie的時(shí)候,增加cookie.setDomain(".jszx.com");,這樣在webapp_b下面就可以取到cookie。

2)這個(gè)參數(shù)必須以“.”開(kāi)始。

3)輸入url訪問(wèn)webapp_b的時(shí)候,必須輸入域名才能解析。比如說(shuō)在A機(jī)器輸入:http://lc-bsp.jszx.com:8080/webapp_b,可以獲取cas在客戶(hù)端設(shè)置的cookie,而B(niǎo)機(jī)器訪問(wèn)本機(jī)的應(yīng)用,輸入:http://localhost:8080/webapp_b則不可以獲得cookie。

4)設(shè)置了cookie.setDomain(".jszx.com");,還可以在默認(rèn)的home.langchao.com下面共享。

二、讀取

從客戶(hù)端讀取Cookie時(shí)調(diào)用的是HttpServletRequest的getCookies方法。該方法返回一個(gè)與HTTP請(qǐng)求頭中的內(nèi)容對(duì)應(yīng)的Cookie對(duì)象數(shù)組。得到這個(gè)數(shù)組之后,一般是用循環(huán)訪問(wèn)其中的各個(gè)元素,調(diào)用getName檢查各個(gè)Cookie的名字,直至找到目標(biāo)Cookie。然后對(duì)這個(gè)目標(biāo)Cookie調(diào)用getValue,根據(jù)獲得的結(jié)果進(jìn)行其他處理。

注意:若jsp(SUN企業(yè)級(jí)應(yīng)用的***)和Servlet所在目錄(Servlet為其映射目錄)的父目錄中有同名cookie,則request.getCookie()方法得到的Cookie數(shù)組中保存的是其父目錄中的cookie的信息;

三、說(shuō)明

我們知道,對(duì)于一個(gè)頁(yè)面中的request和response,是一次http請(qǐng)求產(chǎn)生的,request是http請(qǐng)求中的所有參數(shù),因此包含了發(fā)出這次http請(qǐng)求時(shí)cookie的值,而response是對(duì)于這次http請(qǐng)求webapplication產(chǎn)生的反應(yīng),所以它可以寫(xiě)cookie的值,這樣看來(lái),request得到的cookie的值,和response要寫(xiě)的cookie的值可以說(shuō)是完全不同的。

簡(jiǎn)單地說(shuō)request得到的cookie的值是在這次http請(qǐng)求之前的cookie的值,而response要寫(xiě)得值是這次http請(qǐng)求之后的cookie的值。所以,在同一個(gè)request和response中,如果response中增加了新的cookie,request中并不能得到。

【編輯推薦】

  1. jsp開(kāi)發(fā)技術(shù)應(yīng)用的29個(gè)注意事項(xiàng)
  2. JSP虛擬主機(jī)使用中的亂碼問(wèn)題
  3. jsp速度優(yōu)化七種方法
  4. 詳細(xì)了解JSP中九個(gè)隱含對(duì)象
  5. 詳細(xì)介紹JSP技術(shù)的兩種架構(gòu)模型
責(zé)任編輯:于鐵 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-08 11:19:51

jspaction

2009-07-01 10:12:40

JSP環(huán)境配置JSP引擎

2009-09-02 09:44:01

JSP和JavaBea

2009-07-03 18:31:04

JSP表達(dá)式

2009-07-03 11:21:43

Servlet和JSPJSP路徑

2011-06-07 11:14:51

JAVAJSP

2011-06-21 14:25:44

JavaScriptcookie

2011-06-15 13:07:10

JSP和JavaBea

2009-06-17 16:01:28

2011-07-11 15:02:54

枚舉

2011-07-21 15:44:33

Java內(nèi)部類(lèi)

2011-07-13 15:47:18

MFC

2011-06-08 16:05:34

VB數(shù)組

2011-07-20 15:58:53

C++引用

2011-07-11 11:02:12

JAVA集合框架

2009-07-06 15:31:42

JSP Action

2010-03-18 15:47:07

Java創(chuàng)建線(xiàn)程

2011-06-08 15:45:41

字符串JAVA

2011-06-15 15:16:54

Session

2011-07-14 11:08:30

C#繼承
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)