国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

會(huì)話跟蹤C(jī)ookie與Session

2019-11-15 00:57:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
會(huì)話跟蹤C(jī)ookie與session

會(huì)話跟蹤用來(lái)跟蹤用戶的整個(gè)會(huì)話,常用的是Session和Cookie。Cookie通過(guò)客戶端記錄信息確定用戶身份,Session通過(guò)在服務(wù)器端記錄信息確定用戶身份。

1.Cookie

1.1概念及使用方法

  Cookie實(shí)際上是一小段文本信息。客戶端請(qǐng)求服務(wù)器,如果服務(wù)器需要記錄該用戶狀態(tài),就使用response向客戶端瀏覽器頒發(fā)一個(gè)Cookie。客戶端瀏覽器會(huì)把Cookie保存起來(lái),當(dāng)瀏覽器再請(qǐng)求該網(wǎng)站時(shí),把請(qǐng)求的網(wǎng)址連同該Cookie一同交給服務(wù)器。服務(wù)器檢查該Cookie,以此來(lái)辨認(rèn)用戶狀態(tài)。服務(wù)器還可以根據(jù)需要修改Cookie的內(nèi)容。

  java中把Cookie封裝成了javax.servlet.http.Cookie類。每個(gè)Cookie都是該Cookie類的對(duì)象。服務(wù)器通過(guò)操作Coolkie類對(duì)象對(duì)客戶端Cookie進(jìn)行操作。通過(guò)request.getCookie()獲取客戶端提交的所有Cookie(Cookie[]),通過(guò)response.addCookie(Cookie cookie)向客戶端設(shè)置Cookie。

  Cookie對(duì)象使用key-value屬性對(duì)的形式保存用戶狀態(tài),一個(gè)Cookie對(duì)象保存一個(gè)屬性對(duì),一個(gè)request或者response同時(shí)使用多個(gè)Cookie。因?yàn)镃ookie類位于包javax.servlet.http.*下面,所以jsp中不需要import該類。

1.2不可跨域名性

  根據(jù)域名的不同,網(wǎng)站只能操作自己的Cookie,這是由客戶端瀏覽器決定的。

1.3Unicode編碼:保存中文

  使用時(shí)可以用如下語(yǔ)句生成Cookie 及從Cookie中取值

Cookie cookie = new Cookie(URLEncoder.encode("姓名","UTF-8"));String cookieName=URLDecoder.decode(cokie.getName()),"UTF-8";

1.4BASE64編碼:保存二進(jìn)制圖片

//inbyte binary;//輸入流輸入圖片String content = BASE64Encoder.class.newInstance().encode(binary);Cookie cookie=new Cookie("file", content);//outbyte[] binary=BASE64Decoder.class.newInstance().decodeBuffer(cookie.getValue(),.replace(" ",""));response.getOutputStream().write(binary);

1.5Cookie的所有屬性

1.6Cookie的有效期

  Cookie的maxAge決定著Cookie的有效期,單位為妙。Cookie中通過(guò)getMaxAge()方法與setMaxAge(int maxAge)方法來(lái)讀寫(xiě)maxAge屬性。

  如果maxAge屬性為正數(shù),則表示該Cookie會(huì)在maxAge秒之后自動(dòng)失效。瀏覽器會(huì)將其寫(xiě)到對(duì)應(yīng)的Cookie文件中,下面的Cookie信息將永遠(yuǎn)有效。

cookie.setMaxAge(Integer.MAX_VALUE);

  如果maxAge為負(fù)數(shù),則表示該Cookie僅在本瀏覽器窗口以及本窗口打開(kāi)的子窗口內(nèi)有效,關(guān)閉窗口后該Cookie失效。不會(huì)被寫(xiě)入Cookie文件中。

1.7刪除和修改

  如果maxAge為0,則表示刪除該Cookie。

  response對(duì)象提供的Cookie操作方法只有一個(gè)添加操作add,要想修改Cookie只能使用一個(gè)同名的Cookie來(lái)覆蓋原來(lái)的Cookie。

1.8Cookie的域名

  同一一級(jí)域名下的二級(jí)域名不可交互使用Cookie,如果想二級(jí)域名下都可以使用該Cookie,需要設(shè)置Cookie的domain參數(shù)

1.9Cookie的路徑

  path屬性決定允許訪問(wèn)Cookie的路徑,path屬性需要使用符號(hào)“/”結(jié)尾。

1.10JavaScr

  設(shè)置Cookie可以直接賦值 document.cookie = name + "=" + emcodeURI(value);

2.Session

2.1概念及使用方法

  客戶端瀏覽器訪問(wèn)服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,客戶端瀏覽器再次訪問(wèn)時(shí)只需要從該Session中查找該客戶的狀態(tài)就可以。對(duì)應(yīng)的類為javax.servlet.http.HttpSession。每個(gè)來(lái)訪者對(duì)應(yīng)一個(gè)Session對(duì)象,所有該客戶的狀態(tài)信息都保存在這個(gè)Session對(duì)象里。在客戶端第一次請(qǐng)求服務(wù)器時(shí)創(chuàng)建。

  Servlet中必須使用request來(lái)編程式獲取HttpSession對(duì)象,而JSP中內(nèi)置了Session隱藏對(duì)象,可以直接使用。 request.getSession()方法獲取Session,使用getAttribute(String key)和setAttribute(String key, Object value)方法來(lái)讀寫(xiě)客戶狀態(tài)信息。

2.2Session的生命周期

  Session保存在服務(wù)器內(nèi)存中,每個(gè)用戶都會(huì)有一個(gè)獨(dú)立的Session,因此Session里的信息應(yīng)該盡量精簡(jiǎn)。Session生成后,只要用戶繼續(xù)訪問(wèn),服務(wù)器就會(huì)更新Session的最后訪問(wèn)時(shí)間,并維護(hù)該Session。服務(wù)器會(huì)把長(zhǎng)時(shí)間沒(méi)有活躍的Session從內(nèi)存刪除,Session就自動(dòng)失效。Session的超時(shí)時(shí)間為maxInactiveInterval屬性,可以通過(guò)getMaxInativeInterval()獲取,通過(guò)setMaxInactiveInterval(long interval)修改。Session的超時(shí)時(shí)間也可以在web.xml文件中修改,另外通過(guò)invalidate()方法可以使Session失效。

2.3Session的常用方法

  

2.4Session與瀏覽器

  Http協(xié)議是無(wú)狀態(tài)的,Session不能依據(jù)Http連接來(lái)判斷是否是同一客戶,因此服務(wù)器向客戶端瀏覽器發(fā)送一個(gè)名為JSESSIONID的Cookie,它的值為該Session的id,Session依據(jù)該Cookie來(lái)識(shí)別是否為同一用戶。該Cookie為服務(wù)器自動(dòng)生成的,它的maxAge屬性一般為-1。同一機(jī)器的兩個(gè)瀏覽器會(huì)生成兩個(gè)不同的Session,但是由瀏覽器窗口內(nèi)的鏈接、腳本等打開(kāi)新窗口除外。這類子窗口會(huì)共享父窗口的Cookie,因此會(huì)共享一個(gè)Session。

  如果瀏覽器禁用Cookie或者不支持Cookie,就需要用到URL地址重寫(xiě)。

  URL地址重寫(xiě)是對(duì)客戶端不支持Cookie的解決方案。URL地址重寫(xiě)的原理是將該用戶Session的id信息重寫(xiě)到URL地址中。服務(wù)器能夠解析重寫(xiě)后的URL獲取Session的ID。  

3.Cookie與Session區(qū)別

  Cookie只能保存ASCII字符串,如果需要存取Unicode字符或者二進(jìn)制數(shù)據(jù),需要進(jìn)行UTF-8,GBK或者BASE64等方式編碼。Cookie也不能直接存取Java對(duì)象。Session可以存取任何類型的數(shù)據(jù)。

  Session不存在敏感信息泄露的危險(xiǎn),如果選用Cookie,敏感信息盡量不要寫(xiě)到Cookie中。

  Cookie可以永久有效,Session不能實(shí)現(xiàn)。

  并發(fā)瀏覽的用戶非常多時(shí),最好使用Cookie。

  對(duì)于WAP應(yīng)用, Session+URL地址重寫(xiě)。

  Cookie通過(guò)設(shè)置domain屬性,可以實(shí)現(xiàn)跨域名(二級(jí)域名),Session則不會(huì)支持跨域名。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 天气| 嵊泗县| 长寿区| 昭平县| 宿州市| 新宾| 思南县| 漠河县| 泰州市| 宜良县| 武川县| 方正县| 合川市| 龙南县| 准格尔旗| 岚皋县| 定州市| 库车县| 石嘴山市| 保定市| 恩平市| 油尖旺区| 孟村| 利津县| 建瓯市| 鲁山县| 玛纳斯县| 靖西县| 鄱阳县| 福州市| 海丰县| 旌德县| 滦平县| 武定县| 城口县| 鄂尔多斯市| 罗源县| 文登市| 年辖:市辖区| 井陉县| 兰考县|