程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> request屬性 request.getAttribute(),request.getattribute

request屬性 request.getAttribute(),request.getattribute

編輯:JAVA綜合教程

request屬性 request.getAttribute(),request.getattribute


一、request.getParameter() 和request.getAttribute() 區別

(1)request.getParameter()取得是通過容器的實現來取得通過類似post,get等方式傳入的數據,request.setAttribute()和getAttribute()只是在web容器內部流轉,僅僅是請求處理階段。

(2)request.getParameter()方法傳遞的數據,會從Web客戶端傳到Web服務器端,代表HTTP請求數據。request.getParameter()方法返回String類型的數據。

request.setAttribute()和getAttribute()方法傳遞的數據只會存在於Web容器內部

還有一點就是,HttpServletRequest類有setAttribute()方法,而沒有setParameter()方法。

拿一個例子來說一下吧,假如

j1.jsp裡有

[html] view plain copy
  1. <!--  j1與j2為鏈接關系-->  
  2.   <form  method="post" action="j3.jsp">  
  3.     用戶名:<input type="text" name="username">  
  4.       <input type="submit" name="submit" value="提交">  
  5. </form>  

的話在j2.jsp中通過request.getParameter("username")方法來獲得請求參數username:

[html] view plain copy
  • <%   
  •       String s = request.getParameter("username");  
  •       %>  
  •       名字是:<%=s %>  

  • 或者j1.jsp中有

    [html] view plain copy
  • <a href="2.jsp?username=accp">2.jsp</a>  
  • 在j2.jsp中通過request.getParameter("username")來獲得請求參數username。

    但是如果范圍內的數據,也還是說一個例子吧。

    有j1.jsp j2.jsp和j3.jsp,   

    j1.jsp月j3.jsp為鏈接關系,j3.jsp與j2.jsp為轉發關系

    從j1.jsp鏈接到j3.jsp時,被鏈接的是j3.jsp可以通過getParameter()方法來獲得請求參數.

    j3.jsp希望向j2.jsp傳遞從j1.jsp獲取的用戶名字,如何傳遞這一數據呢?先在j3.jsp中調用如下setAttribute()方法:

    j1.jsp

     

    [html] view plain copy
  • <form  method="post" action="j3.jsp">  
  •    用戶名:<input type="text" name="username">  
  •      <input type="submit" name="submit" value="提交">  
  • lt;/form>   
  • j3.jsp

    [html] view plain copy
  • <%  
  • String username=request.getParameter("username");  
  • request.setAttribute("username",username);  
  • %>  
  • <jsp:forward page="j2.jsp" />  
  •   
  • <!-- j1到j3,j3到j2是一個request對象, request.setAttribute(),給request對象設置一個屬性,然後在另一個頁面中獲取 -->  

  • j2.jsp

     

    [html] view plain copy
  • <% String username=(String)request.getAttribute("username"); %>  
  •      j2頁面,用戶名:<%=username %>  

  • 二、從更深的層次考慮

    request.getParameter()方法傳遞的數據,會從Web客戶端傳到Web服務器端。request.getParameter()方法返回String類型的數據。

    request.setAttribute()和getAttribute()方法傳遞的數據只會存在於Web容器內部,在具有轉發關系的Web組件之間共享。這兩個方法能夠設置Object類型的共享數據。
    getParameter得到的都是String類型的。或者是http://a.jspid=123中的123,或者是某個表單提交過去的數據。

    getAttribute則可以是對象。
    getParameter()是獲取POST/GET傳遞的參數值;
    getAttribute()是獲取對象容器中的數據值;
    getParameter:用於客戶端重定向時,即點擊了鏈接或提交按扭時傳值用,即用於在用表單或url重定向傳值時接收數據用。

    getAttribute:用於服務器端重定向時,即在sevlet中使用了forward函數,或struts中使用了mapping.findForward。getAttribute只能收到程序用setAttribute傳過來的值。

    setAttribute是應用服務器把這個對象放在該頁面所對應的一塊內存中去,當你的頁面服務器重定向到另一個頁面時,應用服務器會把這塊內存拷貝另 一個頁面所對應的內存中。這樣getAttribute就能取得你所設下的值,當然這種方法可以傳對象。session也一樣,只是對象在內存中的生命周 期不一樣而已。

    getParameter只是應用服務器在分析你送上來的request頁面的文本時,取得你設在表單或url重定向時的值。

    另外,JavaScript與JSP中不能相互傳值,因為JavaScript運行在客戶端,而JSP運行在服務器端,若想使他們之間可以相互傳遞參數,可以在JSP中設置一個hidden控件,用它的value結合上面的用法來傳遞所需要的參數。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved