標籤: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()的區別