web-dev-qa-db-ja.com

JSPを使用してURLからパラメータを取得する方法

JSPでは、URLからパラメータを取得する方法を教えてください。

例えば、私はwww.somesite.com/Transaction_List.jsp?accountID=5というURLを持っています
5を手に入れたいです。

セッション用のrequest.getAttribute( "accountID")などはありますか?

179
Josh Curren

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>!");
    }
%>
167
Sajad Bahmani

統一表現言語暗黙オブジェクト について、 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");
%>
223
Pascal Thivent

EL(JSP式言語)を使用します。

${param.accountID}

71
Taylor Leese

ここにコメントを追加してもいいですか...

<c:out value="${param.accountID}"></c:out>

私にはうまくいきません(0が表示されます)。

代わりに、これは動作します:

<c:out value="${param['accountID']}"></c:out>

20
Léa Massiot

request.getParameter("accountID")はあなたが探しているものです。これはJavaサーブレットAPIの一部です。詳しくは、 http://Java.Sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html を参照してください。

5
user229916
String accountID = request.getParameter("accountID");
4
johannes

www.somesite.com/Transaction_List.jsp?accountID=5

このURLには、Javaのrequest.getParameterメソッド呼び出しがあります。ここで数値をintにキャストする場合は、stringにキャストする文字列値と同様です。そのため、必要に応じて、ページの下の行の下にコピーしてください。

int  accountId =(int)request.getParameter("accountID");

これで、ページ全体でaccountIdを使用してこの値を呼び出すことができます。

ここでaccountIdはパラメーターの名前です。これを使用して複数のパラメーターを取得することもできますが、これは機能しません。 GETリクエストをヒットした場合にのみPOSTメソッドで動作し、エラーになります。

これが役に立てば幸いです。

0
jay Patel

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);
}
0
Ainz Ooal Gown