request
request範圍較小壹些,只是壹個請求。
request對象的生命周期是針對壹個客戶端(說確切點就是壹個瀏覽器應用程序)的壹次請求,當請求完畢之後,request裏邊的內容也將被釋放點 。
簡單說就是妳在頁面上的壹個操作,request.getParameter()就是從上壹個頁面中的url、form中獲取參數。
但如果壹個request涉及多個類,後面還要取參數,可以用request.setAttribute()和request.getAttribute()。
但是當結果輸出之後,request就結束了。
session
session可以跨越很多頁面。
而session的生命周期也是針對壹個客戶端,但是卻是在別人設置的會話周期內(壹般是20-30分鐘),session裏邊的內容將壹直存在,即便關閉了這個客戶端瀏覽器 session也不壹定會馬上釋放掉的。
可以理解是客戶端同壹個IE窗口發出的多個請求。
這之間都可以傳遞參數,比如很多網站的用戶登錄都用到了。
比較
request占用資源比較少,安全性也比較高,可是相對來說缺乏持續性。
session則相對來說對資源的消耗會大點,安全性相對來說也會稍微低點,可是它能實現比如會話跟蹤技術。
如果可以使用request的情況下,盡量使用request 因為相對於服務器來說資源的消耗還是比較重要的。
在傳遞頁面過程中request傳遞到下壹頁面就不能再傳遞了,而sesison卻不如此,即request僅限於2個相鄰的頁面
每按壹個網頁上的壹個鏈接就是壹個新的request,當服務器返回給瀏覽器壹個response時,request就結束了,此時保存在request中的對象就不存在了,
但是當妳用壹個瀏器連到服務器上時application-server會新開壹個session給妳,當連接超時或瀏覽器關閉時session才銷毀。
所以說作用的範圍是不壹樣,session也就可以跟蹤用戶的狀態。
session相當於是壹個客戶端的全局變量,
比如A機與服務器第壹次訪問時設置session.setAttribute("aaa")="ComputerA".則在A機訪問繼續訪問的任意壹個頁面都可以取的session.getAttribute("aaa")的值是ComputerA;
request是某壹次訪問的局域變量,
生命周期只是壹次請求。因此login的變量應該放在session中