4

Tomcat で 404 not found ページに移動する URL または URI を保存したいと考えています。より明確に、入力したページが見つからないときに移動するようにアプリをカスタマイズします。Tomcat は、見つからないページに入力するたびに/home.xhtmlリダイレクトします。 home.xhml.myapp.com/anotfoundpage、Tomcat のリダイレクト先home.xhml URL を取得したい: www.myapp.com/anotfoundpage。

その URL を取得するために使用できる Tomcat クラスの属性はありますか?

4

3 に答える 3

5

わかりました。調査の結果、 を使用する必要があることがわかりましたrequest.getAttribut("javax.servlet.error.request_uri")。このメソッドは、404 エラーの原因となった URL を返します。

だから私がする必要があるのは、例えばNotFoundHandlerなどのサーブレットを宣言し、このクラスをurl-pattern : NotFoundにマップしてから、Tomcat 404エラーに指定することだけです:

<error-page>
<error-code>404</error-code>
<location>/NotFound</location>

次に、サーブレット内で、request.getAttribut("javax.servlet.error.request_uri") を使用します。

于 2013-06-12T23:23:50.400 に答える
0

アプリケーションの開発に使用しているフレームワークに応じて、さまざまな方法があります。単純なサーブレットのみを使用していると仮定すると、サーブレット フィルターまたはサーブレットを使用してアプリケーションのすべての無効なパスを処理し、メソッドrequest.getRequestURI()を使用してユーザーが入力したパスを見つけることができます。

たとえば、次のようなものがあります。

<web-app>
        <servlet>
             <servlet-name>MyRealServletOne</servlet-name>
             <servlet-path>foo.Servlet1</servlet-path>
        </servlet>
        <servlet-mapping>
             <servlet-name>MyRealServletOne</servlet-name>
             <url-pattern>/realPath</url-pattern>
        </servlet-mapping>

        <servlet>
             <servlet-name>InvalidPaths</servlet-name>
             <servlet-path>foo.InvalidServlet</servlet-path>
        </servlet>
        <servlet-mapping>
             <servlet-name>InvalidPaths</servlet-name>
             <url-pattern>/*</url-pattern>
        </servlet-mapping>    
</web-app>

したがって、404 リクエストのコードを挿入foo.InvalidServletし、ユーザーに 404 エラーを表示するようにしてください。

それが役立つことを願っています。

于 2013-06-12T04:10:03.470 に答える
-1

私は以下を使用します。これは私の WEB-INF/web.xml ファイルにあり、<web-app>要素の子です。

404 をサーブレットまたは他の場所に送りたい場合は、<location>要素の値を変更することで実行できます。

<!-- Catch 404 errors -->
<error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
</error-page>

これには、Tomcat 構成を変更する必要はなく、デプロイメント記述子 (web.xml) のみを変更する必要があります。

于 2013-06-11T21:34:15.537 に答える