在WEB開發中,服務器能夠爲每一個用戶瀏覽器建立一個會話對象(session對象),注意:一個瀏覽器獨佔一個session對象(默認狀況下)。所以,在須要保存用戶數據時,服務器程序能夠把用戶數據寫到用戶瀏覽器獨佔的session中,當用戶使用瀏覽器訪問其它程序時,其它程序能夠從用戶的session中取出該用戶的數據,爲用戶服務。java
Cookie是把用戶的數據寫給用戶的瀏覽器。web
Session技術把用戶的數據寫到用戶獨佔的session中。瀏覽器
Session對象由服務器建立,開發人員能夠調用request對象的getSession方法獲得session對象。服務器
服務器建立session出來後,會把session的id號,以cookie的形式回寫給客戶機,這樣,只要客戶機的瀏覽器不關,再去訪問服務器時,都會帶着session的id號去,服務器發現客戶機瀏覽器帶session id過來了,就會使用內存中與之對應的session爲之服務。cookie
第一次訪問時,服務器會建立一個新的session,而且把session的Id以cookie的形式發送給客戶端瀏覽器。session
解決方案:URL重寫
jsp
response.encodeRedirectURL(java.lang.String url) 用於對sendRedirect方法後的url地址進行重寫。 url
response.encodeURL(java.lang.String url)用於對錶單action和超連接的url地址進行重寫spa
eg:code
<!--修改前:--> <a href=「maillogin.jsp「> <!--修改後:--> <a href=「<%=response.encodeURL(「maillogin.jsp「)%>「>
5、session對象的建立和銷燬時機
建立:利用session.isNew()判斷session是否是新建立的。
手動銷燬:利用session.invalidate()
session對象默認30分鐘沒有使用,則服務器會自動銷燬session,在web.xml文件中能夠手工配置session的失效時間。
<!-- 設置Session的有效時間:以分鐘爲單位--> <session-config> <session-timeout>15</session-timeout> </session-config>