回覆列表
  • 1 # 漂漂仙人

    request物件和session物件的最大區別是生命週期。

    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中

  • 2 # 使用者6704656755005

    request和session的作用

    request是獲取資訊--透過使用者提交的表單,查詢字串,cookie等獲得資訊

    session是服務端用來儲存一些資料(通常是標記狀態的,當然也可以儲存別的)

    session是服務端的記錄變數,可以跟蹤記錄訪問者動作,比如登入,退出等。

    request用在資料提交,表單資料等

    request和session的優點和缺點

    request佔用資源比較少 安全性也比較高 可是相對來說 缺乏持續性

    而session則相對來說 對資源的消耗會大點 安全性相對來說也會稍微低點 可是它能實現比如會話跟蹤技術 各有優點和缺點 。

  • 中秋節和大豐收的關聯?
  • 印表機的紙太小內容不能完全顯示怎麼設定?