我使用的是tomcat,每当我转到一个servlet无法处理的方向时,我都想做其他事情,比如显示默认错误:
type Status report
message /test
description The requested resource is not available.
我在哪里可以处理这个问题¿?
先谢谢你了
从Tomcat 9开始,有了不同的错误处理配置。
您必须:
<Valve className="org.apache.catalina.valves.ErrorReportValve" errorCode.404="webapps/ROOT/error_page.html" errorCode.0="webapps/ROOT/error_page.html" showReport="false" showServerInfo="false" />
请参考:https://stackoverflow.com/a/55702749/2532710或Tomcat文档:https://Tomcat . Apache . org/Tomcat-9.0-doc/config/Valve . html # Error _ Report _ Valve
下面是一个最小的< code>web.xml,您可以将它放在webapps文件夹中(如果您不想全局更改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>
请注意<code>web。xml必须放在…/webapps/YourFolder/WEB-INF/WEB.xml
中。
在< code>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>
在 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...).如果您使用Servlet 3.x,您甚至可以省略错误代码/错误类名部分来定义默认错误页面。
问题内容: 我想在侦听器中指定可侦听的默认端口。是否有比在内部解析并插入配置的端口更容易的修复方法? 目标是运行时不必每次都指定地址和端口,而要从中获取参数。 问题答案: 使用以下命令创建一个bash脚本: 将其保存为runserver并与manage.py放在同一目录中 并运行为
我正在使用Spring Boot 2.4.4,我会将默认Web服务器Tomcat更改为undertow或JHetty,但我发现同时使用Gradle或Maven非常困难。 一份旧的文档介绍了如何做到这一点,但我确信一切都改变了,因为现在tomcat、undertow和jetty配置嵌入到核心库中: https://docs.spring.io/spring-boot/docs/2.1.9.RELEA
如何更改@kafkastreamssstatestore的默认serdes?我知道,在Kafka流云的新版本3.0.1中,方法如下所述:https://cloud.spring.io/spring-cloud-static/spring-cloud-stream-binder-kafka/3.0.1.RELEASE/reference/html/spring-cloud-stream-binder
默认情况下,Tomcat配置的默认端口是8080。这就是为什么所有已部署的Web应用程序都可以通过URL访问的原因:http://localhost:8080/yourapp。如果希望应该在80端口上运行,则需要将默认端口8080更改为80,这是HTTP连接器的默认端口。 要更改此端口,请打开并找到以下内容: 更改为以下内容: 修改后,您可以使用"http://localhost/"来访问您的应用
当启动一个流浪者盒子时,“默认”这个名字来自哪里? 有没有办法设定这个?
可以参考apache-tomcat\bin\Windows service HOW-TO.txt 一、Windows 64 位系统(推荐) 1. 把平台自带的jdk目录用64位jdk替换(..\..\jdk目录) 2. 当前目录下tomcat6.exe改名为tomcat6-x86.exe,tomcat6-x64.exe改名为tomcat6.exe 3. 双击执行installService.bat