- 資料會從 web client 傳到 web server,表示 HTTP 請求數據,get/post 的參數(For HTTP servlets, parameters are contained in the query string or posted form data. )。
- app server 在分析你送上來的 request 頁面內容時,取得你設在表單或 URL 重定向時的值。
- 只能接受 String。
- ex: A.jsp 連到 B.jsp 時,B.jsp 可以透過 getParameter() 獲得請求參數。
* getAttribute()
- 資料只會存在 web container,在具有轉發關係的 web 組件間共享,用來接受來自 servlet 的變數或 action,主要資料來至於server conainer 的記憶體,透過兩個方式設定:
- container 自動加上去的一些 自訂request 資訊(javax.servlet.request.X509Certificate 等)。
- setAttribute是 app server 把 object 放在該頁面所對應的空間,當頁面被 forward 到另一個頁面時, app server 會把這個空間的資訊複製到另一頁面所對應的空間中,所以getAttribute就能取得之前所設下的值。
- 接受 type 是 Object。
- 屬於 class HttpServletRequest。
- ex: A.jsp forwaed到 B.jsp 時,可在 A.jsp 中先 setAttribute(),在 B.jsp 便可由 getAttribute 取得。
* Overview
- 所以當使用get/post資料時,應該是用getParameter 而非 getAttribute ,若要在request (像是session)分享資訊(含Object),可以用getAttribute ,若要在兩個page 之間,理當要forward 才可以用getAttribute 共享,不然scope已經超過了..
- ActionForm若僅只是要給forward使用的變數 , 可以用set/get Attribute 而少用session(效能)
* Reference
- request.getAttribute()和request.getParameter()的区别 - Java / Java EE
- JWorld@TW Java論壇 - Re:request的getParameter和getAttribute
- request.getAttribute()与request.getParameter() 方法区别_Struts_Java中文网
- request.getParameter和request.getAttribute之间的区别 - LL_java - 博客园
沒有留言:
張貼留言