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

在監聽器這一塊經常看到這兩個方法,於是就上網查了一下其區別。

主要參考了這位博主的思想;原博客

1.獲取的對象不同

 getAttribute()表示從request範圍取得設置的屬性,必須要通過setAttribute設置屬性,才能通過getAttribute取得。設置和取得的值都是Object類型。

    getParameter()表示接收頁面提交的 參數,主要有表單提交的參數、URL重寫傳遞的參數(http://item.jsp?id=1中的id值)等,所以不需要通過setParameter來設置參數,而且參數的返回類型是String類型。



2.數據傳遞路徑不同

1.request.getAttribute ()其實是取的web容器裏面的值
一個request就是一個對象,setAttribute,其實就是在request scope裏面添加了一個變量。我們打個比方,request裏有一個map,setAttribute就是map.put(key,value)。

 request.setAttribute()和getAttribute()方法傳遞的數據只會存在於Web容器內部,在具有轉發關係的Web組件之間共享。這兩個方法能夠設置Object類型的共享數據。
例:authenticate.jsp和hello.jsp之間爲轉發關係。authenticate.jsp希望向hello.jsp傳遞當前的用戶名字,  如何傳遞這一數據呢?先在authenticate.jsp中調用setAttribute()方法:
authenticate.jsp:
<%
String  username=request.getParameter("username");
request.setAttribute("username",username);
%>
<jsp:forward  page="hello.jsp"  />
hello.jsp(通過getAttribute來獲取username)
<%  String  username=(String)request.getAttribute("username");  %>
Hello:  <%=username  %>




2.request.getParameter()獲取通過get或者post方式提交上來的參數,是從客戶端獲取的
<form name="form1" method="post" action="upload.jsp">    
請輸入用戶姓名:<input type="text" name="username">    
<input type="submit" name="Submit" value="提交">    
</form>  
upload.jsp可以通過getParameter()直接獲取username
< % String username=request.getParameter("username"); %>    

總結:
request.getAttribute()方法返回request範圍內存在的對象,而request.getParameter()方法是獲取http提交過來的數據。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章