HttpServletRequest中getAttribute()和getParameter()的區別

來源:互聯網
上載者:User

標籤:web伺服器

HttpServletRequest中getAttribute()和getParameter()的區別1、擷取的來源不同HttpServletRequest類有setAttribute()方法,而 沒有setParameter()方法 

get/setParameter是在對你的頁面中的表單元素進行操作,擷取的是這個表單元素中的值,是某個表單提交過去的資料

比如常見的擷取POST/GET傳遞的參數值、還有通過URL傳遞參數,這種方法應該用的多是http://a.jsp?id=123中的123

get/setAttribute是對你頁面中自己定義的對象進行操作,比如,用request.setAttribute("name","您自己的值");來設定值  這裡我們設定了name值,當我們在需要用到name屬性時,採用 String name=(String)request.getAttribute("name"); 來獲得。


2、獲得的內容不同

getParameter 返回的是String, 用於讀取提交的表單中的值;       
getAttribute 返回的是Object,需進行轉換,可用setAttribute設定成任意對象,使用很靈活,可隨時用; 
3、資料層的區別request.getParameter()方法傳遞的資料,會從Web用戶端傳到Web伺服器端,代表HTTP請求資料;request.setAttribute()和getAttribute()方法傳遞的資料只會存在於Web容器內部,在具有轉寄關係的Web組件之間共用。即request.getAttribute()方法返回request範圍記憶體在的對象,而request.getParameter()方法是擷取http提交過來的資料。 

getParameter()是擷取POST/GET傳遞的參數值;用於用戶端重新導向時,即點擊了連結或提交按扭時傳值用,即用於在用表單或url重新導向傳值時接收資料用。
getAttribute()是擷取對象容器中的資料值;用於伺服器端重新導向時,即在sevlet中使用了forward函數,或struts中使用了mapping.findForward。getAttribute只能收到程式用setAttribute傳過來的值


4、一個簡單一實例當兩個Web組件之間為連結關係時,被連結的組件通過 getParameter()方法來獲得請求參數
例如假定welcome.jsp和authenticate.jsp之間為連結關係,welcome.jsp中有以下代碼: 
<a href="/authenticate.jsp?username=weiqin">authenticate.jsp </a> 或者: <form name="form1" method="post" action="authenticate.jsp">    請輸入使用者姓名:<input type="text" name="username">    <input type="submit" name="Submit" value="提交"> </form>   在authenticate.jsp中通過 request.getParameter("username")方法來獲得請求參數username: <% String username=request.getParameter("username"); %> 



當兩個Web組件之間為轉寄關係時,轉寄目標組件通過 getAttribute()方法來和轉寄源組件共用request範圍內的資料。假定authenticate.jsp和hello.jsp之間為轉寄關係。authenticate.jsp希望向hello.jsp傳遞當前的使用者名稱字,如何傳遞這一資料呢?先在authenticate.jsp中調用 setAttribute()方法: 
<% String username=request.getParameter("username"); request.setAttribute("username",username); %> 


<jsp:forward page="hello.jsp" /> 
在hello.jsp中通過getAttribute()方法獲得使用者名稱字: 
<% String username=(String)request.getAttribute("username"); %> Hello: <%=username %> 


HttpServletRequest中getAttribute()和getParameter()的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.