0

静的ページを提供する代わりに、動的にエラー ページを生成するにはどうすればよいですか? それともこれは不可能ですか?

私は最初の Java Web App に取り組んでおり、web.xml 構成ファイルの複雑さを学ぼうとしています。ドキュメントに基づく私の理解では、特定の HTTP ステータス コードまたは Java 例外に対して提供される静的ファイルを指定することによって、エラー ページが構成されます。例えば...

これは、内部サーバー エラーのページとして機能します。

...
<error-page>
    <error-code>500</error-code>
    <location>/errors/http/500.html</location>
</error-page>
...

これは、サーブレット例外のページを提供します

...
<error-page>
    <exception-type>javax.servlet.ServletException</exception-type>
    <location>/errors/java/servlet_exception.html</location>
</error-page>
...

これにより、すべてのデフォルトのエラーページが指定されます

...
<error-page>
    <location>/errors/index.html</location>
</error-page>
...

しかし、この情報をスクリプト/クラスに送信するにはどうすればよいでしょうか?

エラーページをかなり標準にしたい。ロゴ、エラー コード、およびエラーに基づく簡単なメッセージを含めることができます。ステータス コードまたは例外タイプをパラメーターとしてスクリプト/クラスに渡したいと思います。これを行う方法はありますか?

4

1 に答える 1

1

基本的に、次のことを行う必要があります。

  1. エラーページをサーブレットまたは jsp (「エラーハンドラ」) としてセットアップする
  2. エラーハンドラー内で、エラーを説明するいくつかのデータをリクエスト属性として取得します。例: 404 ステータス コードと java.lang.IllegalArgumentException 例外を処理する 2 つのディレクティブを使用して web.xml を構成するとします。

404 を発生させると、エラー ハンドラーは次の要求属性を認識します。

javax.servlet.forward.request_uri /testwebapp1/errordd 
javax.servlet.forward.context_path /testwebapp1 
javax.servlet.forward.servlet_path /errordd 
javax.servlet.forward.path_info /error 
javax.servlet.error.message /testwebapp1/errordd 
javax.servlet.error.status_code 404 
javax.servlet.error.servlet_name default 
javax.servlet.error.request_uri /testwebapp1/errordd 

javax.servlet.error.status_codeには http ステータス コードが含まれます

IllegalArgumentException を発生させた場合、リクエスト属性には、発生した例外を含む属性「javax.servlet.error.exception_type」が含まれます。これらの定数の詳細については、 https://tomcat.apache.org/tomcat-7.0-doc/servletapi/constant-values.htmlを参照してください。

于 2016-08-16T22:18:52.583 に答える