创建servlet程序知识点详解---servlet-day07
情景1:
京東在買東西的時(shí)候,只有結(jié)帳的時(shí)候才會(huì)要求必須登錄賬戶
#1.狀態(tài)管理
##(1)什么是狀態(tài)管理?
將瀏覽器與web服務(wù)器之間多次交互當(dāng)做一個(gè)整體來處理,并且將多次交互所涉及的數(shù)據(jù)(即狀態(tài))保存下來
##(2)如何進(jìn)行狀態(tài)管理
方式一:將狀態(tài)保存在客戶端(瀏覽器端)
cookie技術(shù)
方式二:將狀態(tài)保存在服務(wù)器端
session技術(shù)
###(3)cookie技術(shù)
#### 1)什么是cookie?
服務(wù)器臨時(shí)存放在瀏覽器端的少量數(shù)據(jù)
### 2)工作原理
瀏覽器訪問服務(wù)器時(shí),服務(wù)器會(huì)將少量數(shù)據(jù)以set_cookie消息頭的形式發(fā)送給瀏覽器,瀏覽器將這些數(shù)據(jù)保存下來;
當(dāng)瀏覽器再次訪問服務(wù)器,會(huì)將之前保存的這些數(shù)據(jù)以cookie消息頭的形式發(fā)送給服務(wù)器
### 3)添加cookie
cookie c = new cookie(string name,string value);
注: name:cookie的名稱
value:cookie的值
response.addcookie(c);
### 4)讀取cookie
Cookie[ ] request.getCookie();
注:
a.一個(gè)Cookie對(duì)象封裝了一個(gè)Cookie的信息(包括了cookie的名稱和值)
string cookie.getName()
string cookie.getValue()
b.有可能返回null
### 5)編碼問題
a.什么是編碼問題
cookie只能保存合法的ascii字符,中文需要轉(zhuǎn)換成合法的ascii字符才可以
b.如何處理?
String URLEncoder.decode(String str,String charset);
String URLDecoder.decode(String str,String charset);
c.建議:
在添加cookie時(shí),對(duì)所有的值都統(tǒng)一使用上述方法來進(jìn)行處理
###6)生存時(shí)間
默認(rèn)情況下,瀏覽器會(huì)將cookie保存在內(nèi)存里,
只要瀏覽器不關(guān),則cookie會(huì)一直存在,可以調(diào)用cookie.setMaxAge方法來設(shè)置cookie的生存時(shí)間
生存時(shí)間:
setMaxAge(int seconds)
注: a.單位是秒
b.值可以
>0 瀏覽器會(huì)將cookie保存在硬盤上,當(dāng)超過指定的時(shí)間,瀏覽器會(huì)將cookie刪除
<0 default 缺省值,即瀏覽器會(huì)將cookie保存在內(nèi)存里面
=0 刪除cookie
比如,要?jiǎng)h除名稱為city的cookie Cookie c =new Cookie("city","");
c.setMaxAge(0)
### 7)cookie的路徑問題
a.什么是cookie的路徑問題
瀏覽器在向服務(wù)器上的某個(gè)地址發(fā)送請(qǐng)求時(shí),會(huì)比較該地址是否符合cookie的路徑的要求,只有符合條件的cookie才會(huì)被發(fā)送
b.cookie的默認(rèn)路徑
cookie的默認(rèn)路徑等于添加該cookie的web組件的路徑
c.匹配規(guī)則
比如,cookie的路徑是"/day07/abc"
如果訪問的是/day07/findCookie1.jsp no
/day07/abc/findCookie2.jsp yes
/day07/abc/sub/findCookie3.jsp yes
即: 請(qǐng)求路徑要么等于cookie的路徑,要么cookie路徑的子路徑,則該cookies會(huì)被發(fā)送
d.修改cookie的路徑
cookie.setPath( )
### 8)cookie的限制
a.可以被用戶禁止
b.不安全 注: 不要將敏感數(shù)據(jù)以cookie的方式來保存
c.只能保存少量數(shù)據(jù) 注:大約是4k
d.cookie的數(shù)量也有限制 注:大約幾百個(gè)
e.cookie只能保存字符串
總結(jié)
以上是生活随笔為你收集整理的创建servlet程序知识点详解---servlet-day07的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java容器基础
- 下一篇: 多图:一文带你入门掌握JVM所有知识点