淺談Request中的Attribute

Jun
appxtech
Published in
4 min readJul 20, 2020

什麼是Attribute,在程式語言中Attribute指的是屬性的意思,但在Request中,常被用為參遞參數之用。下列淺談Request中的Attribute的幾個特性。

1、Attribute的設值及取值(Set and Get)
2、Attribute的傳遞
3、Attribute的生命週期

Attribute的設值及取值(Set and Get),以使用者於前端輸入值,傳到Servlet再到Jsp顯示為例。

上圖為創建一個html的頁面,使用form表單及input欄位輸入值後,由button的submit將form表單以POST的方式送到indexServlet。

上圖在Servlet中,用request.getParameter(key),取得前端input欄位中所輸入的值,並用toString()轉為String型態。再用request.setAttribute(key, value);帶入參數值。key為標籤,value為所傳遞的內容值

上圖在Jsp中,只要寫入Jsp顯示籤標語法<%= %>,並在之中寫入request.getAttribute(key),這裡的key帶入在Servlet中所設的標籤名稱即可。最後將會在瀏覽器(這裡用Chrome做示範)傳回Attribute所取得的值。

以上就是一個簡單的透過reqeuest的Attribute傳接值(Set and Get)的方法。

Attribute的傳遞

在使用request的Attribute傳值會取不到值,導致取值的結果為「null」,大多是因為使用的導頁方式response.sendRedirect(url)發生的問題。

不可以使用response.sendRedirect(url);
response.sendRedirect(“index2.jsp”);

要用getRequestDispatcher(url)並帶Forward();
request.getRequestDispatcher(“index2.jsp”).forward(request, response);

Attribute的生命週期

透過上圖得知,Servlet可將瀏覽器(Browser)中User所輸入的值;取出並設為(Set)Attribute,再傳到Jsp中。Jsp再(Get) 取得Attribute後;回到瀏覽器(Browser)中顯示。這時在回到瀏覽器(Browser)後,Attribute的值即消失。

也就是說,Request的Attribute的生命週期為一次性。若要再傳到下一頁(Request)中的話,就必需再做設值及取值(Set and Get)。Attribute會隨著Request傳遞,因此在速度上算是較快速的方式之一,可以多加以利用Attribute的特性來處理前端中的資訊。

--

--