1- ?獲取session的方案
session: ?https://blog.csdn.net/yiifaa/article/details/77542208
2- ?session什么時候創建?
一個常見的誤解是以為session在有客戶端訪問時就被創建,然而事實是直到某server端程序調用HttpServletRequest.getSession(true)這樣的語句時才被創建。
注意如果JSP沒有顯示的使用 <% @page session="false"%> 關閉session,
則JSP文件在編譯成Servlet時將會自動加上這樣一條語句 HttpSession session = HttpServletRequest.getSession(true);這也是JSP中隱含的session對象的來歷。
由于session會消耗內存資源,因此,如果不打算使用session,應該在所有的JSP中關閉它。
?
3- ?session何時被刪除?
session在下列情況下被刪除:
A.程序調用HttpSession.invalidate()
B.距離上一次收到客戶端發送的session id時間間隔超過了session的最大有效時間
C.服務器進程被停止
再次注意關閉瀏覽器只會使存儲在客戶端瀏覽器內存中的session cookie失效,不會使服務器端的session對象失效,除非此時Server端剛好session失效時間到了。
?
4-?getSession()/getSession(true)、getSession(false)的區別,isNew()
getSession()/getSession(true):當session存在時返回該session,否則新建一個session并返回該對象
getSession(false):當session存在時返回該session,否則不會新建session,返回null。
public boolean isNew()方法如果會話尚未和客戶程序(瀏覽器)發生任何聯系,即服務器端程序還沒有返回客戶端時,
則這個方法返回true,這一般是因為會話是新建的,不是由輸入的客戶請求所引起的。但如果isNew返回false,
只不過是說明他之前曾經訪問Web應用,并不代表他們曾訪問過我們的servlet或JSP頁面。
?
5 cookie:?https://blog.csdn.net/u011145904/article/details/77745777
?
6-?然后我再聊下session_id吧,它是保存在cookie中,首先session是一個只要活動就不會過期的東西,只要開啟cookie,每一次會話,session_id都不會改變,我們可以根據session_id來判斷用戶是否是正常登陸,防止用戶偽造session。然后我們也要防止session被劫持,我們可以對session_id進行再一次的加密,防止暴力破解,還有可以設置HttpOnly。通過設置Cookie的HttpOnly為true,可以防止客戶端腳本訪問這個Cookie,從而有效的防止XSS攻擊。