JSPでは、URLからパラメータを取得する方法を教えてください。
例えば、私はwww.somesite.com/Transaction_List.jsp?accountID=5
というURLを持っています
5を手に入れたいです。
セッション用のrequest.getAttribute( "accountID")などはありますか?
GETリクエストでは、リクエストパラメータはクエリ文字列(URLの疑問符の後のデータ)から取得されます。たとえば、URL http://hostname.com?p1=v1&p2=v2 には、2つの要求パラメータ - - p1とp2が含まれています。 POSTリクエストでは、リクエストパラメータは、クエリ文字列とリクエストの本文にエンコードされている投稿データの両方から取得されます。
この例では、生成された出力にリクエストパラメータの値を含める方法を示します。
Hello <b><%= request.getParameter("name") %></b>!
ページがURLでアクセスされた場合:
http://hostname.com/mywebapp/mypage.jsp?name=John+Smith
結果の出力は次のようになります。
Hello <b>John Smith</b>!
名前がクエリ文字列で指定されていない場合、出力は次のようになります。
Hello <b>null</b>!
この例では、スクリプトレット内のクエリパラメータの値を使用します。
<%
if (request.getParameter("name") == null) {
out.println("Please enter your name.");
} else {
out.println("Hello <b>"+request. getParameter("name")+"</b>!");
}
%>
統一表現言語 の 暗黙オブジェクト について、 Java EE 5チュートリアル は次のように書いています。
暗黙オブジェクト
JSP式言語は、一連の暗黙オブジェクトを定義します。
pageContext
:JSPページのコンテキスト以下を含むさまざまなオブジェクトへのアクセスを提供します。
servletContext
:JSPページのサーブレットと同じアプリケーションに含まれるWebコンポーネントのコンテキスト。 Webコンテキストへのアクセスを参照してください。session
:クライアントのセッションオブジェクトクライアント状態の維持を参照してください。request
:JSPページの実行をトリガーする要求。 要求からの情報の取得 を参照してください。response
:JSPページから返された応答。応答の構築を参照してください。- さらに、以下のオブジェクトへの簡単なアクセスを可能にするいくつかの暗黙のオブジェクトが利用可能です。
param
:リクエストパラメータ名を単一の値にマッピングしますparamValues
:リクエストパラメータ名を値の配列にマップしますheader
:リクエストヘッダ名を単一の値にマッピングしますheaderValues
:リクエストヘッダ名を値の配列にマッピングしますcookie
:クッキー名を単一のクッキーにマッピングしますinitParam
:コンテキスト初期化パラメータ名を単一の値にマップします- 最後に、スコープオブジェクトの使用で説明されているさまざまなスコープ変数へのアクセスを許可するオブジェクトがあります。
pageScope
:ページスコープの変数名をそれらの値にマッピングしますrequestScope
:リクエストスコープの変数名をそれらの値にマッピングしますsessionScope
:セッションスコープの変数名をそれらの値にマッピングしますapplicationScope
:アプリケーションスコープの変数名をそれらの値にマッピングします
面白い部分は太字で示しています:)
それで、あなたの質問に答えるために、あなたは(ELを使って)このようにそれにアクセスできるべきです:
${param.accountID}
または、 JSPスクリプトレット を使用する(推奨されません)。
<%
String accountId = request.getParameter("accountID");
%>
EL(JSP式言語)を使用します。
${param.accountID}
ここにコメントを追加してもいいですか...
<c:out value="${param.accountID}"></c:out>
私にはうまくいきません(0が表示されます)。
代わりに、これは動作します:
<c:out value="${param['accountID']}"></c:out>
request.getParameter("accountID")
はあなたが探しているものです。これはJavaサーブレットAPIの一部です。詳しくは、 http://Java.Sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html を参照してください。
String accountID = request.getParameter("accountID");
www.somesite.com/Transaction_List.jsp?accountID=5
このURL
には、Javaのrequest.getParameter
メソッド呼び出しがあります。ここで数値をint
にキャストする場合は、string
にキャストする文字列値と同様です。そのため、必要に応じて、ページの下の行の下にコピーしてください。
int accountId =(int)request.getParameter("accountID");
これで、ページ全体でaccountId
を使用してこの値を呼び出すことができます。
ここでaccountId
はパラメーターの名前です。これを使用して複数のパラメーターを取得することもできますが、これは機能しません。 GET
リクエストをヒットした場合にのみPOST
メソッドで動作し、エラーになります。
これが役に立てば幸いです。
subject_idを使って件名レコードを削除したい例
@RequestMapping(value="subject_setup/delete/{subjectid}",method = RequestMethod.GET)
public ModelAndView delete(@PathVariable int subjectid) {
subjectsDao.delete(subjectid);
return new ModelAndView("redirect:/subject_setup");
}
そして、パラメータはあなたのクエリの入力に使われます。
public int delete(int subjectid) {
String sql = "update tbl_subject set isdeleted= '1' where id = "+subjectid+"";
return template.update(sql);
}