Java中getAttribute getParameter 區別


        網上說的不少,發現都是同一篇,汗。。。。。

(1)HttpServletRequest類有setAttribute()方法,而沒有setParameter()方法

(2)當兩個Web組件之間為鏈接關系時,被鏈接的組件通過getParameter()方法來獲得請求參數,

(3)當兩個Web組件之間為轉發關系時,轉發目標組件通過getAttribute()方法來和轉發源組件共享request范圍內的數據。 在一本書上看到若是正常則response.getRequestDispatcher(index.jsp).forward(req,resp),否則的話是include(req,resp)(查看API得知RequestDispatcher只有那倆方法)。

        getAttribute是取得jsp中 用setAttribute設定的attribute ;parameter得到的是string,attribute得到的是object ;request.getParameter()方法傳遞的數據,會從Web客戶端傳到Web服務器端,代表Http請求數據; request.setAttribute()和getAttribute()方法傳遞的數據只會存在於Web容器內部,在具有轉發(很重要的哦)關系的Web組件之間 共享,即request.getAttribute()方法返回request范圍內存在的對象,而request.getParameter()方法是 獲取Http提交過來的數據,最后一條理論化些就是 getParameter用於客戶端重定向,即點擊了鏈接或提交按扭時傳值用,即用於在用表單(post)或url重定(get)向傳值時接收數據用, getAttribute:用於服務器端重定向時,即在sevlet中使用了forward函數,或struts中使用了mapping.findForward。getAttribute只能收到程序用setAttribute傳過來的值。 getAttribute()是獲取SESSION的值; 另外,可以用setAttribute,getAttribute發送接收對象.而getParameter顯然只能傳字符串。 setAttribute 是應用服務器把這個對象放在該頁面所對應的一塊內存中去,當你的頁面服務器重定向到另一個頁面時,應用服務器會把這塊內存拷貝另一個頁面所對應的內存中。 這樣getAttribute就能取得你所設下的值,當然這種方法可以傳對象。session也一樣,只是對象在內存中的生命周期不一樣而已。

        getParameter()得到的值如果下次不提交或保存起來的話,下次重定向后就沒啦? 
        getAttribute()所要得到的屬性值因為存在session中,所以重定向后仍可以取出?

        getAttribute()在request和session中都有,只是作用域不同,在取之前肯定是要在某個地方存一下,這種東東可以存取對象 
        這個問題主要是request和session的差別,request范圍較小一些,只是一個請求,簡單說就是你在頁面上的一個操作, request.getParameter()就是從上一個頁面中的url、form中獲取參數(js獲取復選框document.ElementById()),但如果一個request涉及多個類,后面還要取參數,可以用request.setAttribute()和request.getAttribute(),但是當結果輸出之后,request就結束了。而session可以跨越很多頁面,可以理解是客戶端同一個IE窗口發出的多個請求。這之間都可以傳遞參數,比如很多網站的用戶登錄都用到了。


免責聲明!

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



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