2

get 変数を多かれ少なかれ表示する非常に単純な JSP ファイルがあります。

<p>Hello, <%= request.getParameter("name") %></p>

だから、もし私がに行くならwebpage.jsp?name=Alice、私は得るだろうHello, Alice. webpage.jsp一方、に行くと、 が得られHello, nullます。

name 変数が設定されていない場合は、代わりに Bad Request を送信したいと思います。サーブレットでは、次のようにします。

  response.sendError(HttpServletResponse.SC_BAD_REQUEST);
  return;

JSPページから同様に行うにはどうすればよいですか?

4

1 に答える 1

4

同じコード<% %>を JSP 内に入れるだけです。その時点で応答がコミットされていないことを確認する必要があるだけです。そうしないと、IllegalStateExceptions に直面するだけです。そのため、すべての HTML テンプレート コンテンツが発行される前に、JSP ファイルの一番上で呼び出す必要があります。

言うまでもなく、JSP は要求/応答を制御する適切な場所ではありません。この特定のケースでは、セッション全体のログインに関係する場合は、サーブレットまたはおそらくフィルターでジョブを実行したいと考えています。さらに、その「Hello」行は として実行する方が良い<p>Hello, <c:out value="${param.name}" /></p>です。保守性が向上するだけでなく、サイトが巨大な XSS 攻撃の穴から守られます。

于 2011-10-26T14:20:10.810 に答える