request.setAttribute()和session.setAttribute()的區別詳解


我們在Servlet和頁面間傳值時,經常會用到request.setAttribute()和session.setAttribute(),下面是兩段示例用法

request.setAttribute()

    request.setAttribute("people",people); //第一個people是一個字符串,第二個是一個集合類型對象
            request.getRequestDispatcher("chakan.jsp").forward(request, response);
            //response.sendRedirect("chakan.jsp");   //傳過去的值會是null,
            //sendRedirect不能傳遞request對象。使用request.setAttribute時不能使redirect而是forward。即是將請求轉發而不是重定向。

request.setAttribute()和request.getAttribute()配對使用,作用域是請求和被請求頁面之間。request.setAttribute()是只在此action的下一個forward需要使用的時候使用;request.getAttribute()表示從request范圍取得設置的屬性,必須要先setAttribute設置屬性,才能通過getAttribute來取得,設置與取得的為Object對象類型。

request.setAttribute這個的生命周期就是request級別的,傳輸快,生命周期短,只能在特定頁面接受。

session.setAttribute()

 HttpSession session = request.getSession();
             session.setAttribute("people",people); //第一個people是一個字符串,第二個是一個集合類型對象
             response.sendRedirect("chakan.jsp"); //發送請求

    (jsp)ArrayList <Information> B = (ArrayList<Information>) session.getAttribute("people"); //只需要在需要的頁面get就好了

session.setAttribute()和session.getAttribute()配對使用,作用域是整個會話期間,在所有的頁面都使用這些數據的時候使用,session可以跨越很多頁面,session的生命周期也是針對一個客戶端,但是卻是在別人設置的會話周期內(一般是20-30分鍾),session里邊的內容將一直存在,即便關閉了這個客戶端瀏覽器 session也不一定會馬上釋放掉的。session就相當一個全局變量。

session.setAttribute():取得當前HttpSession,在HttpSession范圍保存參數,就一直在,隨時可以取來用。缺點是比較占用資源。

這些就是我個人的實踐和結合閱讀其他相似內容的間接,有錯誤歡迎指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM