1. ホーム
  2. Web プログラミング
  3. JSP プログラミング

jsp request.getParameter()とrequest.getAttribute()メソッドの違いについて解説しています。

2022-01-16 23:50:36

getParameterは、postのgetメソッドから渡されるパラメータを受け取るために使用されます。
getAttributeの前にsetAttributeを指定する必要があります。

(1) request.getParameter()はコンテナの実装を通してpostやgetなどのようなもので渡されたデータを取得します。request.setAttribute()とgetAttribute()はWebコンテナの内部で、ただリクエスト処理の段階で流れているだけなのです。

(2) request.getParameter()メソッドで渡されるデータは、WebクライアントからWebサーバー側に渡されるもので、HTTPリクエストデータを表しています。request.getParameter()メソッドはString型のデータを返します。

request.setAttribute()およびgetAttribute()メソッドで渡されるデータは、Webコンテナの内部にのみ存在します。

もうひとつは、HttpServletRequestクラスにはsetAttribute()メソッドがあるが、setParameter()メソッドがないことである。

例として、2つのWEBページをリンクする場合、つまり1.jspから2.jspへリンクする場合、getParameter()メソッドでリクエストパラメータを取得することが可能です。

もし1.jspが

Htmlコード

<form name="form1" method="post" action="2.jsp">  
Please enter the user name: <input type="text" name="username">  
<input type="submit" name="Submit" value="Submit">  
</form>  

リクエストパラメータusernameは、2.jspではrequest.getParameter("username")メソッドで取得します。

Htmlコード

< % String username=request.getParameter("username"); %>  


しかし、2つのWEBの間に転送関係があれば、転送先のWEBはgetAttribute()メソッドを使って、転送元のWEBとリクエストのスコープ内のデータを共有し、かつ、やはり例を言うことができる。

1.jspと2.jspがあります。

1.jspは現在のユーザー名を2.jspに渡したいのですが、このデータをどのように渡せばいいのでしょうか?まず、1.jspで以下のsetAttribute()メソッドを呼び出します。

Htmlコード

<%  
String username=request.getParameter("username");  
request.setAttribute("username", username);  
%>  
  
<jsp:forward page="2.jsp" />  

2.jspのユーザー名をgetAttribute()メソッドで取得します。

Htmlコード

<% String username=(String)request.getAttribute("username"); %>  

  1. HttpServletRequestクラスにはsetAttribute()メソッドがあるが、setParameter()メソッドはない。
  2. 2 つの Web コンポーネントがリンクされている場合、リンク先のコンポーネントは getParameter() メソッドでリクエストパラメータを取得します。
  3. 2 つの Web コンポーネントが転送される場合、転送先のコンポーネントは転送元のコンポーネントと getAttribute() メソッドでリクエストスコープのデータを共有します。

フォームやリンクから渡されるパラメータは、通常、getParameter を使用します。

request.setAttribute("name","jerry") use request.getAttribute("name") で割り当てられる。

この問題は主にrequestとsessionの違いで、requestは少し範囲が狭く、ただrequestは簡単に言うと、ページ上で行う操作で、request.getParameter()はurl、フォームで前のページからパラメータを取得することですが、もしリクエストが複数のクラスを含む場合は、setAttribute()とrequest.getAttribute()が、結果を出力したらリクエスト終了となります。

一方、セッションは多くのページにまたがり、クライアント側では同じIEウィンドウからの複数のリクエストと解釈することができます。これらはすべて、多くのサイトで使用されるユーザーログインのように、それらの間でパラメータを渡すことができます。

ページのパラメータを取得するには、一般にgetParameterを使用します。文字列....

getAttribute()は、オブジェクトを取得することができます。

getParameterはページから渡されたパラメータを取得します。 id=123とかのように。

getAttribute() は、サーブレットページで jsp にパラメータを渡すためによく使われます。

今回は、jspのrequest.getParameter()とrequest.getAttribute()メソッドの違いについてご紹介します。ここでは、request.getParameter()とrequest.getAttribute()メソッドの違いについて説明します。