java使用cookie和session
當某個使用者發出頁面請求時,WEB伺服器只是簡單的進行響應,然後就關閉與該使用者的連線,請求的相關資料將不再存在,這樣明顯有不好的地方。cookie和session解決了這一問題,客戶端(一般是瀏覽器)與伺服器之間的互動,將操作所涉及的資料記錄下來,儲存在cookie(儲存在瀏覽器客戶端)或者session(儲存在伺服器)中。
一、cookie
1、什麼是cookie
瀏覽器在訪問伺服器時,伺服器將一些資料以 set-cookie 訊息頭的形式傳送給瀏覽器。瀏覽器會將這些資料儲存起來。當瀏覽器再次訪問伺服器時,會將這些資料以 cookie 訊息頭的形式傳送給伺服器。
2、建立 cookie
Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);12
cookie的name不可以重複,和Map集合類似,當有重複的name的時候,會替代。
3、查詢cookie
//如果沒有 cookie,則返回 null。
Cookie[] cookies = request.getCookies();
String name = cookie.getName();
String value = cookie.getValue();1234
4、cookie 儲存時的編碼問題
cookie 的值叧能是ascii 字元,如果是中文,需要將中文轉換成 ascii 字元形式。可以使用 URLEncoder.encode()方法和 URLDecoder.decode()方法來進行這種轉換。
5、cookie 的儲存時間
cookie.setMaxAge(int seconds);//單位為秒
seconds > 0
瀏覽器會將 cookie 以檔案的方式儲存在硬碟上。在超過指定的時間以後,會刪除該檔案。
seconds < 0
預設值,瀏覽器會將 cookie 儲存在記憶體裡面。叧有當瀏覽器關閉以後,才會刪除。
seconds = 0
立即刪除該 Cookie
6、刪除 cookie
比如要刪除一個 name 為”username”的 cookie。
Cookie c = new Cookie(“username”,”“);
c.setMaxAge(0);
cookie.setPath(request.getContextPath());//路徑
response.addCookie(c);
7、cookie 的限制
cookie 可以禁止
cookie 的大小有限制(4k 左右)
cookie 的數量也有限制(瀏覽器大約能儲存 300 個)
cookie 的值叧能是字串,要考慮編碼問題。
cookie 不安全
8、cookie 的路徑問題
瀏覽器在向伺服器上的某個地址傳送請求時,會先比較 cookie 的路徑不向訪問的路徑(地址)是否匹配, 叧有匹配的 cookie, 才會傳送。
cookie 的路徑可以通過 cookie.setPath(String path)方法來設定。如果沒有設定, 則有一個預設的路徑,預設的路徑是生成該 cookie 的元件的路徑。
比如: /appname/addCookie 儲存了一個 cookie,則該 cookie 的路徑就是/appname/addCookie。
規則:
cookie 的路徑必須是要訪問的路徑的上層目錄戒者是不要訪問的路徑相等, 瀏覽器才會將 cookie 傳送給伺服器。一般可以設定 setPath(“/appname”),表示訪問該應用下的所有地址,均會發送
二、session
1、什麼是session
瀏覽器訪問伺服器時,伺服器會建立一個 session 物件(該物件有一個唯一的 id, 一般稱為 sessionId)。伺服器在預設情況下,會將 sessionId 以 cookie 機制傳送給瀏覽器。當瀏覽器再次訪問伺服器時, 會將sessionId 傳送給伺服器。 伺服器依據 sessionId 就可以找到對應的 session 物件。
2、如何獲得 session 物件
HttpSession session = request.getSession();
3、HttpSession 介面提供的一些方法
//獲得 sessionId。
String session.getId();
//綁訂資料
session.setAttribute(String name,Object obj);
//獲取資料
Object session.getAttribute(String name);
//刪除繫結
session.removeAttribute(String name);12345678
4、session儲存時間設定
伺服器會將超過指定時間的 session 物件刪除(在指定的時間內,該 session 物件沒有
使用)。
兩種設定方式:
方式一:
session.setMaxInactiveInterval(int seconds);
方式二:
伺服器有一個預設的超時限制,可以通過相應的配置檔案來重新設定。比如可以修改 tomcat 的 web.xml(tomcat_home/conf 下面)。
<session-config>
<session-timeout>30</session-timeout>
</session-config>123
另外,也可以叧修改某個應用的 web.xml。
5、session刪除
session.invalidate();
三、用cookie記錄最近10條記錄
用cookie查詢最近一個月請求的前10條歷史記錄。cookie的中文要求轉碼和解碼。如下圖
1、加入cookie到客戶端
Cookie[] cookies = request.getCookies();//瀏覽器在第一請求時呼叫該方法會返回null
//瀏覽器第一次請求返回到瀏覽器之前會建立一個名為JSESSIONID 的cookie
//param(請求引數)中文轉碼
String paramEnd = URLEncoder.encode(param);
Cookie cookie = new Cookie("param"+cookies.length,paramEnd);//name不可以重複
cookie.setMaxAge(60*60*24*30);//保留一個月的時間
response.addCookie(cookie);//cookie在第一次加入時會建立一個JSESSIONID cookie1234567
2、獲取所有滿足條件的cookie
Cookie[] cookies = request.getCookies();
if(cookies!=null && cookies.length>0){
Map<String,Object> historyPar = (Map<String, Object>)new ListOrderedMap();//按存入順序取出,HashMap並不是按存入順序取出
for(int i=cookies.length-1;i>=0;i--){
Cookie cookie = cookies[i];
String cookVal = URLDecoder.decode(cookie.getValue());
if(cookie.getName().startsWith("param")){
if(historyPar.size()==10) break;//查詢最近10條記錄
historyPar.put(cookVal, cookVal);//map的key值用cookie的value,以免歷史記錄重複
}
}
model.addAttribute("historyPar",historyPar);
}12345678910111213
3、js實現歷史清除
//刪除該路徑下所有cookie
function cleanCookie(){
var keys=document.cookie.match(/[^ =;]+(?=\=)/g);
if (keys) {
for (var i = keys.length; i--;){
document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString()
}
}
window.location.href="${ctx}/searchController/globalSearch";
}12345678910
至此即可查詢出最近一個月的前10條歷史記錄。
---------------------
作者:俺就不起網名
來源:CSDN
原文:https://blog.csdn.net/u012385190/article/details/51957749
版權宣告:本文為博主原創文章,轉載請附上博文連結!
相關推薦
cookie 和session 的區別詳解
重復 處理方式 一行 所有 有效 依據 是把 存儲 一個 二者的定義: 當你在瀏覽網站的時候,WEB 服務器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇, 都紀錄下來。當下次你再光臨同一個網站,WEB 服務器會先看看有沒有它上次留下的
客戶端和服務端如何使用Token和Session
cnblogs blank style ssi exception font 統一 判斷 用戶 一、我們先解釋一下他的含義: 1、Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作
Python之路66-Django中的Cookie和Session
python目錄一、Cookie二、Session一、Cookie1.獲取Cookie request.COOKIES["key"] request.get_signed_cookie(key, default=RAISE_ERROR, s, max_age=None) # 參數 # default:默認
setMaxInactiveInterval和session-config的比較
ive 當前 添加 XML 設置 active max 服務 cti setMaxInactiveInterval和session-config的比較: 1、setMaxInactiveInterval的優先級高,如果setMaxInactiveInterva
Cookie和session
存在 購物車 自動 名稱 () 內存 request 標識 基於 1.會話定義:打開瀏覽器瀏覽某一個網站--多次請求--瀏覽器關閉這個過程稱之為會話。2.B 瀏覽器 /S 服務器 2.1.瀏覽器端的會話技術:cookie JAVA(Cookie)
cookie和session的區別
開發人員 一個 客戶端 匹配 也會 自己 ssi 成了 本地 幾乎每個web開發人員都會問Cookie和Session有什麽聯系和區別 拋出問題: 1.首先服務器是無記性的,不知道那個客戶端上過自己的網站; 2.如果不手動添加記憶功能,那麽每次訪問都需要登錄,豈不是很麻煩?
Django之cookie和session
name resp wrap sign ide 服務端 rgs err response 一、cookie 保存在客戶端瀏覽器上的鍵值對 1.獲取cookie 1 request.COOKIES[‘key‘] 2 request.get_signed_cookie(key
淺談hibernate的sessionFactory和session
ber 讀取配置 簡單 開啟 mil fig 理解 name () 首先,講一個悲傷的故事。。。 有一天,一個以為自己javaEE很叼的程序員,在經歷了好久不寫Java代碼的情況下,去參加阿裏巴巴的java面試,然後,在被問到一個很簡單的問題的時候,結果沒有回答好。那麽接下
Cookie 和 Session
詳解 存儲 意見 語言 ron http font 郵箱 通過 PHP高級工程師之網站安全 在這裏和大家分享一下多數網絡黑客常用的攻擊方式及預防措施。 如有不善,多提意見(QQ:1595068971-郵箱:[email protec
HttpContext.Current.Session 和 Session 的區別
使用 pro 啟動 protect and con 動作 system ont Session(會話)通常指一個動作從開始到結束不間斷的一個動作。 例如“打電話”,通常是“1.拿起電話--2.撥對方號碼--3.對方截圖--4.掛機&rd
[Java][web]利用Spring隨時隨地獲得Request和Session
login html article -a private 綁定 ren alt 結束 利用Spring隨時隨地獲得Request和Session 一、準備工作: 在web.xml中加入 <listener> <
關於django用戶登錄認證中的cookie和session
技術 ima username 就會 關於 logs 之前 cookie req 最近弄django的時候在用戶登錄這一塊遇到了困難,網上的資料也都不完整或者存在缺陷。 寫這篇文章的主要目的是對一些剛學django的新手朋友提供一些幫助。前提是你對django中的sessi
cookie和session的優缺點
cookie sessioncookie是web服務器保存在用戶硬盤上的一段文本,cookie允許在用戶電腦上保存信息並隨後再取它。當程序需要為某個客戶端的請求創建一個session時,服務器首先檢查這個客戶端的請求裏是否已包含了一個session標識(稱為session id),如果已包含則說明以前已經為此
day18-2-django之分頁和session
特征 request 客戶 .site none func pytho 控制 render Django-4 知識預覽 分頁器(paginator) COOKIE 與 SESSION 回到頂部 分頁器(paginator) 分頁器的使用 >>
Cookie 和Session 的區別
cto 字符串 follow jsp技術 基礎 出現 有著 腳本 erb 作者:郭無心鏈接:https://www.zhihu.com/question/19786827/answer/66706108來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明
mysql基礎--global參數和session參數的設置
入參 方式 重啟 mit .cn mysq img png 直接 1.修改my.ini配置文件,如果要設置全局參數最簡單的方式是在my.ini文件中直接寫入參數配置,如下圖所示。重啟數據庫服務就可以使全局參數生效。 如下圖所示,所有新開的session中的參數都生效了
restful架構風格設計準則(五)用戶認證和session管理
好的 困難 是否 ica 過程 集成 設計 管理服務器 系統 讀書筆記,原文鏈接:http://www.cnblogs.com/loveis715/p/4669091.html,感謝作者! Authentication 其實在上一節中,我們已經提出了無狀態約束給REST
Cookie和Session,訪問Web項目上的資源文件
容量 bmi red 顯示 ssi 物理 spa 管理 正整數 WEB項目總路徑問題總結: 背景:項目中的資源文件我們如何訪問:(路徑怎麽寫) 例子:webRoot目錄下有一個目標資源: target.html,如何訪問 思考: 目標
Struts的學習-通配符和session對象
tro gif 通過 action 方法 war aware bsp tex 一、 取得session 3種方法1、context.getSession() -->>Map對象2、HttpServletRequest request =(HttpServletR
基礎知識《十二》一篇文章理解Cookie和Session
alt str web應用 rfi 密鑰 hide 開始 單位 ews 理解Cookie和Session機制 會話(Session)跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。Co