Request與Session的存值取值操作
Request與Session的存值取值
request域的存值:
request可以直接set進(jìn)去
request.setAttribute("request", value);
request域的取值有兩種方式:
"${request}" ------------ "${requestScope.request}"
或者想獲取key值中某一個(gè)valueBean對(duì)象
"${request.name}"
session域的存值:
session需要先get一下獲取session然后才能set進(jìn)去key,value值
request.getSession().setAttribute("session", value); ---------------------------------------------------- HttpSession session = request.getSession(); session.setAttribute("session", value);
session域的取值:
"${sessionScope.session}"
Request和Session的區(qū)別
說(shuō)簡(jiǎn)單點(diǎn) request對(duì)象和session對(duì)象的最大區(qū)別是生命周期。
request
request范圍較小一些,只是一個(gè)請(qǐng)求。
request對(duì)象的生命周期是針對(duì)一個(gè)客戶端(說(shuō)確切點(diǎn)就是一個(gè)瀏覽器應(yīng)用程序)的一次請(qǐng)求,當(dāng)請(qǐng)求完畢之后,request里邊的內(nèi)容也將被釋放點(diǎn) 。
簡(jiǎn)單說(shuō)就是你在頁(yè)面上的一個(gè)操作,request.getParameter()就是從上一個(gè)頁(yè)面中的url、form中獲取參數(shù)。
但如果一個(gè)request涉及多個(gè)類,后面還要取參數(shù),可以用request.setAttribute()和request.getAttribute()。
但是當(dāng)結(jié)果輸出之后,request就結(jié)束了。
session
session可以跨越很多頁(yè)面。
而session的生命周期也是針對(duì)一個(gè)客戶端,但是卻是在別人設(shè)置的會(huì)話周期內(nèi)(一般是20-30分鐘),session里邊的內(nèi)容將一直存在,即便關(guān)閉了這個(gè)客戶端瀏覽器 session也不一定會(huì)馬上釋放掉的。
可以理解是客戶端同一個(gè)IE窗口發(fā)出的多個(gè)請(qǐng)求。
這之間都可以傳遞參數(shù),比如很多網(wǎng)站的用戶登錄都用到了。
比較
request占用資源比較少,安全性也比較高,可是相對(duì)來(lái)說(shuō)缺乏持續(xù)性。
session則相對(duì)來(lái)說(shuō)對(duì)資源的消耗會(huì)大點(diǎn),安全性相對(duì)來(lái)說(shuō)也會(huì)稍微低點(diǎn),可是它能實(shí)現(xiàn)比如會(huì)話跟蹤技術(shù)。
如果可以使用request的情況下,盡量使用request 因?yàn)橄鄬?duì)于服務(wù)器來(lái)說(shuō)資源的消耗還是比較重要的。
在傳遞頁(yè)面過(guò)程中request傳遞到下一頁(yè)面就不能再傳遞了,而sesison卻不如此,即request僅限于2個(gè)相鄰的頁(yè)面
每按一個(gè)網(wǎng)頁(yè)上的一個(gè)鏈接就是一個(gè)新的request,當(dāng)服務(wù)器返回給瀏覽器一個(gè)response時(shí),request就結(jié)束了,此時(shí)保存在request中的對(duì)象就不存在了,
但是當(dāng)你用一個(gè)瀏器連到服務(wù)器上時(shí)application-server會(huì)新開(kāi)一個(gè)session給你,當(dāng)連接超時(shí)或?yàn)g覽器關(guān)閉時(shí)session才銷毀。
所以說(shuō)作用的范圍是不一樣,session也就可以跟蹤用戶的狀態(tài)。
session相當(dāng)于是一個(gè)客戶端的全局變量,
比如A機(jī)與服務(wù)器第一次訪問(wèn)時(shí)設(shè)置session.setAttribute("aaa")="ComputerA".則在A機(jī)訪問(wèn)繼續(xù)訪問(wèn)的任意一個(gè)頁(yè)面都可以取的session.getAttribute("aaa")的值是ComputerA;
request是某一次訪問(wèn)的局域變量,
生命周期只是一次請(qǐng)求。因此login的變量應(yīng)該放在session中
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java Big Number操作BigInteger及BigDecimal類詳解
這篇文章主要為大家介紹了Java Big Number操作BigInteger及BigDecimal類詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07jvm之java類加載機(jī)制和類加載器(ClassLoader)的用法
這篇文章主要介紹了jvm之java類加載機(jī)制和類加載器(ClassLoader)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09基于spring實(shí)現(xiàn)websocket實(shí)時(shí)推送實(shí)例
這篇文章主要為大家詳細(xì)介紹了基于spring實(shí)現(xiàn)websocket實(shí)時(shí)推送實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Java Web檢查用戶登錄狀態(tài)(防止用戶訪問(wèn)到非法頁(yè)面)
一般javaweb網(wǎng)站都有用戶登錄,而有一些操作必須用戶登錄才能進(jìn)行,本文主要介紹了Java Web檢查用戶登錄狀態(tài),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Java實(shí)現(xiàn)給圖片添加圖片水印,文字水印及馬賽克的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)給圖片添加圖片水印,文字水印及馬賽克的方法,涉及java針對(duì)圖片的讀取、水印添加、馬賽克設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01mybaits-plus?lambdaQuery()?和?lambdaUpdate()?常見(jiàn)的使用方法
MyBatis-Plus是一個(gè)?MyBatis?(opens?new?window)的增強(qiáng)工具,在?MyBatis?的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章主要介紹了mybaits-plus?lambdaQuery()?和?lambdaUpdate()?比較常見(jiàn)的使用方法,需要的朋友可以參考下2023-01-01Java多線程編程中的并發(fā)安全問(wèn)題及解決方法
保障多線程并發(fā)安全,解決線程同步與鎖競(jìng)爭(zhēng)問(wèn)題,提高應(yīng)用性能與可靠性。多線程編程需要考慮線程安全性,使用同步機(jī)制保證共享變量的一致性,避免線程競(jìng)爭(zhēng)導(dǎo)致的數(shù)據(jù)不一致與死鎖等問(wèn)題。常用的同步機(jī)制包括synchronized、ReentrantLock、volatile等2023-04-04認(rèn)識(shí)Java中的Stub與StubQueue
StubQueue是用來(lái)保存生成的本地代碼的Stub隊(duì)列,隊(duì)列每一個(gè)元素對(duì)應(yīng)一個(gè)InterpreterCodelet對(duì)象,InterpreterCodelet對(duì)象繼承自抽象基類Stub,下面我們介紹一下StubQueue類及相關(guān)類Stub、InterpreterCodelet類和CodeletMark類。需要的的下伙伴可以參考下面文字內(nèi)容2021-09-09Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式
這篇文章主要介紹了Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07