この機能を使用して、404 などのいくつかのエラー ステータス コードを含む html ページを提供するアプリケーションがあります。ただし、リクエストの一部は、安静サービスまたは安静サービスによって提供される JSON を返す必要がある画像のようなものです。画像のケース。サーブレット コンテナとして Tomcat を使用しています。
明確にするために、画像を提供するサーブレットとhtmlを提供するサーブレットがいくつかあり、ユーザーが構成できるさまざまなパスのhtmlを提供するフィルターがあります。404 ステータスは、通常、要求されたパスにマップされたフィルターまたはサーブレットがないために発生します。したがって、エラーページ機能は、応答するフィルターやサーブレットがないパスの応答を提供するのに便利です。
だから私がweb.xmlに持っているのは(/と*の間のスペースを無視する)です:
... several other mappings above
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/servlet/rest/ *</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ErrorPageServlet</servlet-name>
<url-pattern>/servlet/errorPage/ *</url-pattern>
</servlet-mapping>
...
<filter-mapping>
<!--This will serve content and not forward to the filter chain for certain paths-->
<filter-name>MainFilter</filter-name>
<url-pattern>/ *</url-pattern>
</filter-mapping>
...
<error-page>
<!--Page not found-->
<error-code>404</error-code>
<location>/servlet/errorPage/404</location>
</error-page>
エラー ページ サーブレットで一部のリクエストを無視し、他のリクエストの応答で html を提供することは可能ですか? または、エラー ページを配信する別の方法を使用する必要がありますか?
明確にするために、誰かが /foo (存在しない) を GET すると ErrorPageServlet に移動しますが、GET /servlet/rest/foo/bar の場合は 404 応答コードを返し、ErrorPageServlet には移動しません。