違いは何であるgetAttribute()
とgetParameter()
内のメソッドHttpServletRequest
のクラスは?
違いは何であるgetAttribute()
とgetParameter()
内のメソッドHttpServletRequest
のクラスは?
回答:
getParameter()
httpリクエストパラメータを返します。クライアントからサーバーに渡されたもの。例えばhttp://example.com/servlet?parameter=1
。返却のみ可能String
getAttribute()
サーバー側でのみ使用します-同じリクエスト内で使用できる属性をリクエストに入力します。たとえば、サーブレットに属性を設定し、JSPから読み取ります。文字列だけでなく、あらゆるオブジェクトに使用できます。
${attrName}
がjspページのようなものを使うとき、それらはあなたがrequest.getSession().setAttribute()
?
getAttribute()
はサーバーサイドでの使用だけではありません。たとえばjspページなどでフロントエンドで属性データを取得して表示できます
一般に、パラメータは文字列値であり、クライアントからサーバーに送信され(たとえば、フォームポスト)、サーブレットリクエストから取得されることが最も一般的です。これに対するイライラする例外は、web.xmlで構成され、サーバーに存在する文字列パラメーターであるServletContext初期パラメーターです。
属性は、指定されたスコープ内に存在するサーバー変数です。
application
、アプリケーション全体の寿命で利用可能session
、セッションの存続期間中利用可能request
、リクエストの存続期間中のみ利用可能page
(JSPのみ)、現在のJSPページでのみ使用可能 request.getParameter()
request.getParameter()
リクエストパラメータ(つまり、htmlフォームを投稿して送信されたデータ)を抽出するために使用します。はrequest.getParameter()
常にString
値を返し、データはクライアントから送られます。
request.getAttribute()
を使用request.getAttribute()
して、サーバー側のリクエストスコープにオブジェクトを追加しますrequest.setAttribute()
。ここで好きなタイプのオブジェクトStrings
、カスタムオブジェクト、実際には任意のオブジェクトを追加できます。属性をリクエストに追加し、リクエストを別のリソースに転送しますが、クライアントはこれを知りません。したがって、これを処理するすべてのコードは通常、JSP /サーブレットにあります。を使用request.setAttribute()
して追加情報を追加し、現在のリクエストを別のリソースに転送/リダイレクトできます。
たとえば、first.jspについて検討します。
//First Page : first.jsp
<%@ page import="java.util.*" import="java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>
そしてsecond.jsp:
<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>
ブラウザーからfirst.jsp?CLIENT = youを実行すると、ブラウザーの出力は次のようになります。
From Which Page : *first.jsp*
Data From Client : you
基本的な違いgetAttribute()
とは、getParameter()
第一の方法は、(直列化)は、Javaオブジェクトを抽出し、他の文字列値を提供することです。どちらの場合も、名前(文字列またはJava Bean)を検索して抽出できるように名前が付けられます。
- のgetParameter() :
<html>
<body>
<form name="testForm" method="post" action="testJSP.jsp">
<input type="text" name="testParam" value="ClientParam">
<input type="submit">
</form>
</body>
</html>
<html>
<body>
<%
String sValue = request.getParameter("testParam");
%>
<%= sValue %>
</body>
</html>
request.getParameter("testParam")
「クライアントパラメータ」である「testParam」という名前の入力ボックスの投稿されたフォームから値を取得します。次に、それを印刷するので、画面に「クライアントパラメータ」が表示されます。したがって、request.getParameter()は、クライアントが送信した値を取得します。サーバー側で値を取得します。
- のgetAttribute():
request.getAttribute()
、これはすべて完了サーバー側です。YOUはリクエストに属性を追加し、YOUは別のリソースにリクエストを送信します。クライアントはこれを知りません。したがって、これを処理するすべてのコードは通常servlets.getAttributeにあり、常にオブジェクトを返します。
getParameter
-クライアントのHTMLページから必要な情報を取得するために使用されます
getAttribute
-これは、別のまたは同じJSPまたはサーブレットページで以前に設定されたパラメータを取得するために使用されます。
基本的に、あるjsp /サーブレットから別のjsp /サーブレットに転送する場合、または単に移動する場合、それらをオブジェクトに配置し、set-attributeを使用してSession変数に格納しない限り、必要な情報を取得することはできません。
getAttributeを使用すると、Session変数を取得できます。
http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttributeから
「パラメータ」は、クライアントからサーバーに送信される名前/値のペアです。通常、HTMLフォームから送信されます。パラメータは文字列値のみを持つことができます。時々(たとえば、GETリクエストを使用して)、これらはURLに直接エンコードされます(?の後、name = valueの形式で、&で区切られた各ペア)。また、POSTなどのメソッドを使用する場合、リクエストの本文に含まれます。
「属性」はサーバーローカルのストレージメカニズムです。スコープ指定された属性に格納されているものは、明示的に実行しない限り、サーバーの外部に送信されることはありません。属性には文字列名がありますが、オブジェクト値を格納します。属性はJavaに固有であり(Javaオブジェクトを格納します)、パラメーターはプラットフォームに依存しません(これらは、汎用バイトで構成されるフォーマットされた文字列のみです)。
合計4つの属性のスコープがあります。「ページ」(JSPおよびタグファイルのみ)、「リクエスト」(現在のクライアントのリクエストに限定、リクエストの完了後に破棄)、「セッション」(クライアントのセッションに保存、無効化)セッションが終了した後)、「アプリケーション」(アプリケーションのデプロイされた存続期間全体でアクセスするすべてのコンポーネントに存在します)。
要点は、クライアントからデータを取得するときにパラメーターを使用し、アプリケーションのみが内部で使用するサーバーにオブジェクトを格納するときにスコープ属性を使用することです。
getAttribute()とgetParameter()の基本的な違いは、戻り値の型です。
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)