1

サーブレットまたはjspにパラメータを追加する方法はありますか?私が検索した限りでは、パラメータはフォームでのみ設定できるためです。パラメータを手動で追加するコマンドがJavaにないのはなぜですか?私が持っているもう1つの疑問は、あるjspページから別のページに転送するときに、入力要求(パラメーター、属性などを含む)が次のjspページに転送されるかどうかです。特定のパラメータまたは属性を転送したくない場合はどうなりますか?

4

4 に答える 4

3

リクエストパラメータは、を使用して渡すことができます<jsp: param>

このタグには、次の2つの属性が含まれています。

  1. 名前
  2. 価値。

例えば:

<jsp: param name="myParam" value="Amar Patel"/>

このタグは、<jsp:forward>または<jsp:include>ブロック内のネストされたタグとして使用されます。

例えば:

<jsp: forward page="ssParameters.jsp">
  <jsp: param name="myParam" value="Amar Patel"/>
  <jsp: param name="Age" value="15"/>
</jsp: forward>
于 2012-04-13T12:49:12.220 に答える
3

サーブレットまたはjspにパラメータを追加する方法はありますか?

--URLに追加します。のような架空の関数を考えている場合request.setParameter、そのような方法は提供されていません。それならセキュリティ違反になると思いませんか?

于 2012-04-13T12:50:04.203 に答える
2

サーブレットまたはjspにパラメータを追加する方法はありますか?

はい。を使用できる場合、RequestDispatcher.forward(ServletRequest, ServletResponse)または を使用してリクエストパラメータを追加またはフィルタリングRequestDispatcher.include(ServletRequest, ServletResponse)できる場合HttpServletRequestWrapper

// assuming this code is part of a Servlet or JSP
HttpServletRequest request = ...;
final Map<String,String> additionalParameters = ...;

RequestDispatcher dispatcher = this.getServletConfig().getServletContext().getRequestDispatcher("/");

dispatcher.forward(new HttpServletRequestWrapper(request){

    public String getRequestParameter(String parameterName) {
        if (additionalParameters.contains(parameterName)) {
           return additionalParameters.get(parameterName);
        } else {
           if (!"filteredParameter".equals(parameterName)) {
              return super.getParameterMap().get(parameterName());
           } else {
              return null;
           } 
        }
    }
}
, response);

転送/インクルードされたページ/サーブレットに追加の「パラメータ」のみを渡したい場合は、を使用することをお勧めしますServletRequest.setAttribute(String, Object)。ServletRequest属性は、リクエストの処理中に追加/削除でき、リクエストパラメータを使用するときに文字列ではなく完全なJavaオブジェクトを追加できます。

パラメータを手動で追加するコマンドがJavaにないのはなぜですか?

ServletRequestリクエストパラメータは、クライアントからサーバーに送信されるリクエストのワーパーであるため、通常は変更できないものとして扱う必要があります。パラメータを追加する場合は、リクエスト属性を使用してください。

私が持っているもう1つの疑問は、あるjspページから別のページに転送するときに、入力要求(パラメーター、属性などを含む)が次のjspページに転送されるかどうかです。

ほとんどの場合、オリジナルHttpServletRequestは転送されたページ/サーブレットに渡されます。しかし、私のスニペットに示されているように、転送された/含まれているサーブレット/jspに別のServletRequestを渡すことも可能です。

特定のパラメータまたは属性を転送したくない場合はどうなりますか?

上記のコードスニペットを参照してください。独自のパラメータまたは属性を使用して、転送されたパラメータまたは属性をフィルタリングできますHttpServletRequestWrapper

于 2012-04-14T14:04:25.573 に答える
0

URLで使用することにより、パラメーターを渡すことができます。リクエストに関するご質問について。別のjsp/サーブレットに転送すると、すべてのパラメータと属性がリクエストに含まれます。そこに表示したくない場合は、代わりにリダイレクトを使用する必要があります(response.sendRedirect(url))

于 2012-04-13T13:05:13.537 に答える