java session 是什么意思_Java:Session详解
以下情況,Session結(jié)束生命周期,Servlet容器將Session所占資源釋放:
1.客戶端關(guān)閉瀏覽器
2.Session過期
3.服務(wù)器端調(diào)用了HttpSession的invalidate()方法。
"一個瀏覽器就是一個新session,關(guān)了瀏覽器session就結(jié)束了"
session 是在服務(wù)器端建立的,瀏覽器訪問服務(wù)器會有一個sessionid,瀏覽器端通過sessionid定位服務(wù)器端的session,session的創(chuàng)建和銷毀由服務(wù)器端控制。當瀏覽器關(guān)閉后,session還存在在服務(wù)器端,只不過你新開的瀏覽器去訪問服務(wù)器會創(chuàng)建另一個session,這個時候的 sessionid已經(jīng)不一樣了。也就不能訪問上一次的哪個session里面的內(nèi)容了。
"session的創(chuàng)建和銷毀由服務(wù)器端控制",服務(wù)器端才有session,客戶端只是通過sessionid來匹配session.
那服務(wù)器端session如何建的呢? 普通html不會創(chuàng)建,jsp默認是創(chuàng)建的,只要你訪問任何一個jsp就會創(chuàng)建(不過只創(chuàng)建一次),你關(guān)閉瀏覽器重新訪問又會創(chuàng)建一個,這些創(chuàng)建的session由服務(wù)器自己控制銷毀,你也可以在服務(wù)器端代碼中銷毀。
什么情況下需要用上這種服務(wù)器端的session方式?
默認情況下,jsp被訪問就會創(chuàng)建session(最開始是空的沒有數(shù)據(jù)的),你的應(yīng)用中的代碼只是往session里面put數(shù)據(jù)。網(wǎng)上說可以 通過 <%@ page session="false"%>來不讓jsp自動創(chuàng)session.我自己測試了一下(用sessionlistener),根本不起作用, session照樣創(chuàng)建成功。
最后說一下,只有服務(wù)器端才有session.客戶端被存到本地的是cookie.不過安全性低。所以不能放重要的數(shù)據(jù)。
============================================================================
sesion其實簡單:
先request.getsession(),當已有一個session與前request相關(guān)時就返回對這個 session的引用,當沒有時就生成一個.一個session在server通過一個sessionid來標識的。也就是說在一個server是不會有 兩個相同sessionid的session.
那麼session為什麼會和cookie扯在一起呢?
正如我所說對於一 個session來說它的sessionid就是其身份的標識。若我們將這個sessionid保存到用戶端,當同一個會話的后序請求來時都將這個 sessionid放在request 的header中(也就是我們說的cookie)這樣不就可以來驗證這個request是否與之前的request是同一個會話了嗎!
什麼是會話呢?
我 們可以通俗一點理解。只要你的browers不關(guān)我們就稱這一系列的request與response為一個會話。一斷你close就稱這個會話已結(jié)束。 雖然會話結(jié)束但并不代表你的session就被destroy.因為session是存活在server上的。它的生命完全由server來主宰 (web.xml中的設(shè)定).
雖然你的session還存活在server上但你已無法再取得它。因為j2ee的api只給我們一種方法來取得與當前會話相關(guān)的session的引用:request.getsession() or reqeust.getsession(boolean)
=======================================================================
一個常見的誤解是以為session在有客戶端訪問時就被創(chuàng)建,然而事實是直到某server端程序調(diào)用HttpServletRequest.getSession(true)這樣的語句時才被創(chuàng)建,注意如果JSP沒有顯示的使用 關(guān)閉session,則JSP文件在編譯成Servlet時將會自動加上這樣一條語句HttpSession session = HttpServletRequest.getSession(true);
這也是JSP中隱含的session對象的來歷。
能不能讓服務(wù)端不創(chuàng)建sessionid呢?試驗下**************************>
<%@ page session="false"%>
不是不讓頁面創(chuàng)建Session,而是在此JSP頁面無法使用session.可以減少網(wǎng)絡(luò)數(shù)據(jù)傳輸.
總結(jié)
以上是生活随笔為你收集整理的java session 是什么意思_Java:Session详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java对象的内存结构_JAVA 对象内
- 下一篇: java商品展示页面代码_java学习(