私はTomcatを使用していますが、サーブレットで処理されない方向に移動するときはいつでも、デフォルトのエラーを表示する以外のことを実行したいと思います。
type Status report
message /test
description The requested resource is not available.
これはどこで処理できますか?
前もって感謝します
Web.xmlでエラーページを定義します。
<error-page>
<error-code>404</error-code>
<location>/path/to/your/page.html</location>
</error-page>
更新
エラーページは、httpステータス(404、500、...)または完全修飾例外名(Java.lang.Exception、Java.io.FileNotFoundException ...)で定義できます。サーブレット3.xを使用している場合は、error-code/error-classnameの部分を省略して、デフォルトのエラーページを定義することもできます。
これは、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>
→ <a href="<%=newLocation%>"><%=newLocation%></a>
</body>
</html>