1

こんにちは、私は Java サーブレットの初心者です。サーバー側コードでの実行に例外がないことを確認したい。つまり、サーバー コードで例外がスローされたかどうかを確認したい。取得した応答を使用してそれを判断するにはどうすればよいですか?

ありがとうございました

4

3 に答える 3

1

サーブレットからコンテンツを取得する場合、未処理の例外はありません。処理された例外の情報を取得する場合は、それらのcatch句に記録します。

于 2013-06-13T18:31:32.730 に答える
1

サーブレットはサーバー側で実行されるため、クライアントに認識させるかどうかを決定するのはサーバー側のコードですexception。例外が (サーブレット コード内で) 処理されず、Web アプリケーションにエラー ページが設定されていない限り (どちらも推奨されません)、クライアントはそれを自動的に認識しません。

理想的には、クライアントに正確なexception. 代わりに、クライアントは、現在のリクエストが正常に処理されなかった理由に関する適切なエラー メッセージを受け取るだけです。

エラーの詳細は、必要に応じて共有する必要があります。たとえば、入力の検証が失敗した場合、無効だったフィールドの名前をエラー メッセージに含めることは理にかなっています。代わりにa を表示するのは適切ではありませんNumberFormatException(たとえば、クライアントが数値以外の年齢を入力したため)。

編集:
ここには、単一の正しいアプローチはありません。Web アプリケーションがクライアントに対してエラーについてどの程度説明したいかによって、採用できるさまざまな方法があります。

エラーが発生したことをクライアントに知らせる必要がある場合は、簡単なエラーの説明を使用できますsendError()(これにより、バックグラウンドで HTTP ステータス ヘッダーが以下の400 Bad Requestのようなエラー コードに自動的に設定されます)。

if (request.getParameter("id") == null)
    response.sendError(response.SC_BAD_REQUEST, "ID parameter missing");

他のアプローチには、さまざまなエラー コードまたは例外の構成が含ま<error-pages>れます。web.xmlコンテナーは、.jsp以下で構成されたファイルへの自動転送を処理します。

<error-page>
  <error-code>404</error-code>
  <location>/error404.jsp</location>
</error-page>

<error-page>
  <exception-type>java.lang.Exception</error-code>
  <location>/errorPage.jsp</location>
</error-page>

例外に関する詳細情報を取得するには、暗黙的なオブジェクトを受け取るために、JSP のisErrorPage属性を に設定する必要があります。たとえば、(場合によっては)ユーザーに表示されるエラー メッセージを生成するために使用できます。trueexceptionexception.getMessage()

クライアント側

クライアントは、エラーを受け取るために特別なこと (getError() など) を行う必要はありません。クライアントは、リクエストが成功した場合と同じようにブラウザによってレンダリングされる HTML を引き続き受信しますが、成功しなかったため、クライアントは HTML としてフォーマットされたエラー メッセージを受信します (それも可能view > sourceです)。

送信される HTML は、sendError()(Tomcat などの Web サーバーから標準エラー応答を送信する)を使用するか<error-page>、HTML エラー テンプレートを完全に制御できる独自の構成済み JSP を使用するかによって異なります。

于 2013-06-13T19:16:05.613 に答える
0

log4j を使用して (try catch ブロックを使用して) 例外をキャッチしますが、これが何らかの宿題である場合は、http リターン コードに基づいて確認できる 1 つの方法です。jquery http://jquery.com/を使用できます 。404 エラーのサンプル コードを次に示します。また、このページにはすべての http エラー コードとその意味が記載されています。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
   $(function() {
      var urlPath = "some_url";
      $.ajax(urlPath,
      {
         statusCode: {
         404: function() {
            alert('page not found');
         }
      }
   });   
});
</script>
于 2013-06-13T18:50:18.093 に答える