这非常简单明了。我想从 servlet 端抛出 503 错误。
response.sendError(503);
当抛出此错误时,我需要它来访问自定义错误页面。基本上是一个 503 错误页面,但有一些修改。
假设我有 503.html
,并且我添加了
<error-page>
<error-code>503</error-code>
<location>/503.html</location>
</error-page>
在web.xml
中。
我创建了一个 war 文件,其中包含一个抛出 503 错误的 servlet,以及包含此内容的 web.xml
。我将 503.html
保留在父文件夹位置。 (我应该把它放在别处吗?)
我在 WLS 中部署了该应用程序,但此自定义 503.html
未命中。我收到通用 503 错误。
我错过了什么吗?
我的代码如下:
webapp1.war
->web-inf
->web-inf->classes->prject4->Class1.class
->web-inf->jsp->error->custom.html
web.xml
<?xml version="1.0"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Class1</servlet-name>
<servlet-class>project2.Class1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Class1</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<error-page>
<error-code>503</error-code>
<location>/WEB-INF/jsp/error/custom.html</location>
</error-page>
</web-app>
class1.java
public class Class1 extends HttpServlet
{
private ServletConfig config;
public void init(ServletConfig config)throws ServletException
{
this.config=config;
}
public void service (HttpServletRequest request, HttpServletResponse response)
throws IOException
{
response.setContentType("text/html");
ServletOutputStream l_out = response.getOutputStream();
response.sendError(503);
}
}
最佳答案
好吧,这是一个小错误,我一开始没有意识到。
在我的 web.xml
中,servlet 映射被指定为 /*
,这导致了无限循环条件,因为它抛出了与之前相同的代码。映射。因此,我必须调整 servlet 映射,以便 Class1
不会映射到任何错误页面 - 例如 /images/*
。
然后一切开始正常。 :)
关于java - servlet java 抛出的自定义 503 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431657/