web-dev-qa-db-ja.com

Tomcatサーバー、デフォルトのHTTP 404を変更しますか?

私はTomcatを使用していますが、サーブレットで処理されない方向に移動するときはいつでも、デフォルトのエラーを表示する以外のことを実行したいと思います。

type Status report

message /test

description The requested resource is not available.

これはどこで処理できますか?

前もって感謝します

8
aDoN

Web.xmlでエラーページを定義します。

<error-page>
 <error-code>404</error-code>
 <location>/path/to/your/page.html</location>
</error-page>

更新

  1. いいえ、仕様は必要ありません。何でもかまいません、html、jsp、jsf.。
  2. 番号
  3. どこにでも、多くの場合下部に配置できます
  4. 角かっこ間

エラーページは、httpステータス(404、500、...)または完全修飾例外名(Java.lang.Exception、Java.io.FileNotFoundException ...)で定義できます。サーブレット3.xを使用している場合は、error-code/error-classnameの部分を省略して、デフォルトのエラーページを定義することもできます。

7
Stefan

これは、webappsフォルダーに入れることができる最小限のweb.xmlです(404ページをグローバルに変更したくない場合)。これにより、たとえば次のことが可能になります。すべてのリクエストを新しいフォルダにリダイレクトします。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://Java.Sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee
                      http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <error-page>
    <error-code>404</error-code>
    <location>/redirect.jsp</location>
  </error-page>
</web-app>

web.xml.../webapps/YourFolder/WEB-INF/web.xmlに入れる必要があることに注意してください。

redirect.jsp内。あなたは次のようなものを置くでしょう:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
    <title>Moved</title>
</head>
<%
    // get the requested URI
    String requestedLocation = request.getRequestURI();
    // rewrite to new location
    String newLocation = requestedLocation.replaceAll("^/Old", "/New");

    // 301 - permanent redirect
    response.setStatus(response.SC_MOVED_PERMANENTLY);
    response.setHeader("Location", newLocation);
%>
<body>
&rarr; <a href="<%=newLocation%>"><%=newLocation%></a>
</body>
</html>
0
Nux