サーブレットまたはjspにパラメータを追加する方法はありますか?私が検索した限りでは、パラメータはフォームでのみ設定できるためです。パラメータを手動で追加するコマンドがJavaにないのはなぜですか?私が持っているもう1つの疑問は、あるjspページから別のページに転送するときに、入力要求(パラメーター、属性などを含む)が次のjspページに転送されるかどうかです。特定のパラメータまたは属性を転送したくない場合はどうなりますか?
4 に答える
リクエストパラメータは、を使用して渡すことができます<jsp: param>
このタグには、次の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>
サーブレットまたはjspにパラメータを追加する方法はありますか?
--URLに追加します。のような架空の関数を考えている場合request.setParameter
、そのような方法は提供されていません。それならセキュリティ違反になると思いませんか?
サーブレットまたは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
URLで使用することにより、パラメーターを渡すことができます。リクエストに関するご質問について。別のjsp/サーブレットに転送すると、すべてのパラメータと属性がリクエストに含まれます。そこに表示したくない場合は、代わりにリダイレクトを使用する必要があります(response.sendRedirect(url))