jsp内置对象【02】四种内置对象【02】session、application
?我們繼續來學習,上一篇文章中說到了request屬性,那么既要想客戶端和服務端都都能實現跳轉的話,就用到了session。
第三種:session屬性
我們接著修改一下上一篇文章中的代碼來對比一下:
運行一下就會發現,即使是以超鏈接的形式,也依然能夠接受參數。可見session的屬性范圍的確是比request大了。session是一個應用廣泛的屬性。它有一個響亮的名字:一次性會話機制。
?我們先來看一個問題。在瀏覽器上運行session_01.jsp這個頁面,會跳轉到session_02.jsp上,這個時候不要關閉瀏覽器,在地址欄中直接輸入session_02.jsp的地址,可以發現會直接顯示session_02.jsp的內容,那我們關閉瀏覽器,在重新打開一個新的瀏覽器,直接輸session_02.jsp的地址,一運行,結果不顯示值了。那么問題就來了,為什么重新開啟一個瀏覽器就不行了呢?這就是session的特點:一次性會話機制。
什么是session的會話??
? ?會話就行我們在打電話一樣,我們雙方都在通訊,如果有一個掛斷了,那么這次會話就結束了。session也是一樣的。先輸入session_01.jsp地址,然后跳轉后,session就會保存在當前的瀏覽器中,即使直接輸入session_02.jsp的地址,依然能顯示。但是如果在打開一個新的瀏覽器的話,則就無法取得之前設置的session了,因為每一個session只保存在當前的瀏覽器中,并且可以從相關的頁面中取得。
? ? 對于服務器而言,每一個連接到它的客戶端都是一個session。
? ? 可見,即使session的屬性范圍比request擴大了,但是依然存在著限制。要想重新打開瀏覽器還會顯示,那就得使用application屬性范圍了。
第四種:application屬性
我們從上圖中可以看出,所有的application屬性直接保存在服務器上,直接屬性服務器管轄的范圍了,不在受其他的一些因素影響。即使是瀏覽器關閉了,只要服務器沒有關閉,依然可以進行操作。
我們來驗證一下,還是拿上述的的代碼修改一下,為了對比明顯。
運行看一下,即使新開一個瀏覽器,直接輸入application_02.jsp的地址,也依然能夠顯示內容。
但是如果服務器關閉了,那就無法取得了。
經過上一篇http://zhaoyuqiang.blog.51cto.com/6328846/1130617和這一篇的學習,我們一起學習了jsp內置對象中的最重要的四種內置對象。從學習中可以看出,四種內置對象page、request、session和application的屬性范圍是依次擴大的,那么有的同學就直接用最大的,這樣多省事了。這個問題就堅決避免的。因為屬性范圍越大,對于服務器的性能影響也就越大,這個時候就給出了一個原則: 能使用page范圍的就不要使用request,能使用request范圍的就不要使用session,能使用session的就不要使用application。這對初學者簡單的做個項目可能不會有多大影響,但是公司做的項目影響可就大了,所以同學們要養成一個好的習慣。
?
注意的是,內置對象中的所有的方法都應該在Java Servlet Api 中查找,而不是學習java的時候用的那個API,Java Servlet Api在本頁的最后有下載,是英文版本的,有的同學可能不喜歡,不過英文版本的才是原汁原味的,你可以把方法復制下來去谷歌百度翻譯。
?
?
轉載于:https://blog.51cto.com/zhaoyuqiang/1131062
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的jsp内置对象【02】四种内置对象【02】session、application的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 针对每一个类,内存该如何管理都要总结
- 下一篇: Androidpn 消息推送总结