數據的存儲
- Cookie
- Session
- Application
解決亂碼問題
設置編碼格式 | String URLEncoder.encode(變量 ,編碼格式 ) |
---|---|
設置解碼格式 | String URLDecoder.decode(變量 ,解碼格式 ) |
- 編碼和解碼通常一起使用
- 適用於多種場合
Cookie
-
什麼是Cookie:數據存儲對象之一
-
Cookie的作用:臨時以文件的形式將數據存儲在用戶的計算機上
-
保存數據的形式:key-value
-
保存數據的位置:瀏覽器的temp文件夾(每個瀏覽器的temp文件夾互相獨立)
-
保存數據的種類:賬戶信息(不存密碼)、搜索記錄、…
注意:
- 同一個瀏覽器下,Cookie對於該瀏覽器中打開的所有網站都是透明的!!!
- 不同瀏覽器不能獲取對方的cookie
-
Cookie的使用:
創建Cookie對象 Cookie cookie = new Cookie(String key,String value) 保存Cookie對象 response.addCookie(Cookie cookie) 設置Cookie的保存時間 cookie.setMaxAge(int time) 讀取Cookie對象 Cookie[ ] cookies=request.getCookies() 獲取已讀取對象中的key cookies.getName() 獲取已讀取對象中的value cookies.getValue()
注意:
- Cookie保存在客戶端,服務器沒有權限控制客戶端的內存,所以只能以String類型存儲鍵值對
- Cookie對象由response保存
- 保存不能放在轉跳之後,因爲保存Cookie是瀏覽器行爲,如果保存放在轉跳之後,雖然代碼會正常執行,但是瀏覽器不會保存Cookie
- Cookie對象的保存時間以秒爲單位
- Cookie對象由request讀取
- 使用Cookie數組接收讀取到的對象
session(會話)
- 什麼是會話:瀏覽器與服務器之間的一次通話,每次打開瀏覽器將自動產生一個新的會話對象,在原瀏覽器不關閉的情況下,訪問任何網站都不改變會話對象
注意:重新打開瀏覽器或者打開新的瀏覽器,都算一次新的會話
- 會話的作用:可以在多次請求中保存和使用數據
- 如何區別會話:每一次會話,服務器都會給客戶端分配一個全服務器唯一的sessionid,客戶端向服務器發起請求時會攜帶該sessionid**(服務器重啓時,sessionid纔會從服務器上消失)**
注意:因此瀏覽器無法得到其他瀏覽器的會話數據,也得不到該瀏覽器上一次的會話數據
-
session運行在哪裏:服務器
-
session的生命週期:通常爲20分鐘作用(如果用戶長時間不進行網頁操作)
-
session的使用:
session對象保存數據 session.setAttribute(String key,Object value) session對象獲取數據 session.getAttribute(String key,Object value)
注意:由於session運行於服務器,所以session對象有控制內存的權限,也因此session的value能以Object的形式存儲(Object—>要開闢空間—>要運行Java代碼)
application
-
什麼是application: 當網站服務器開啓時,application對象就被創建,所有用戶訪問該網站時共用同一個application對象**(服務器關閉時,application對象被清除)**
-
application的作用:存儲所有用戶的數據
-
application的缺點:服務器運行時間較長時,application佔用的內存較大
-
application運行在哪裏:服務器
-
application的使用:
application對象保存數據 application.setAttribute(String key,Object value) application對象保存數據 application.getAttribute(String key)
Cookie、session、application的區別
Cookie | Session | Application | |
---|---|---|---|
程序運行在哪裏 | 客戶端 | 服務器 | 服務器 |
數據存儲在哪裏 | 客戶端 | 服務器 | 服務器 |
以什麼類型存儲數據 | String | Object | Object |
數據開放權限 | 存儲用戶個人數據,瀏覽器間不通用 | 存儲用戶個人數據,瀏覽器只有讀權限 | 存儲所有用戶數據,數據完全公開 |
數據什麼時候清除 | 瀏覽器清除 | 服務器重啓 | 服務器重啓 |