Tomcat中404/500 错误,自定义错误页面
当服务器出现404、500错误时候希望能够给用户友好的现实界面
只需要在项目的web.xml中添加一些配置
<!-- 400错误 --> <error-page> <error-code>400</error-code> <location>/error.jsp</location> </error-page> <!-- 404 页面不存在错误 --> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <!-- 500 服务器内部错误 --> <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> <!-- java.lang.Exception异常错误,依据这个标记可定义多个类似错误提示 --> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page> <!-- java.lang.NullPointerException异常错误,依据这个标记可定义多个类似错误提示 --> <error-page> <exception-type>java.lang.NullPointerException </exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-type>javax.servlet.ServletException</exception-type> <location>/error.jsp</location> </error-page>
具体的如下:
Tomcat 的错误页面是由 org.apache.catalina.valves.ErrorReportValve 类输出来的。如果想自定义错误页面,不需要修改该类。Servlet 规范声明了相关的API,只需要在每个 web 应用的 web.xml 里定义。可按照错误类型、错误代码配置。例如:
<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_2_5.xsd"
version="2.5">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<error-page>
<error-code>404</error-code>
<location>/errorpages/404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/errorpages/exception.jsp</location>
</error-page>
</web-app>
注意错误页面必须以“/”开头,这样任何path的404错误页面及exception错误都会映射到这两个文件。然后在本web引用的errorpages下面放置404.jsp, exception.jsp两个文件。
错误页面 404.jsp:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<html>
<header>
<title>404 page</title>
<body>
<pre>
<%
Enumeration<String> attributeNames = request.getAttributeNames();
while (attributeNames.hasMoreElements())
{
String attributeName = attributeNames.nextElement();
Object attribute = request.getAttribute(attributeName);
out.println("request.attribute['" + attributeName + "'] = " + attribute);
}
%>
</pre>
代码中输出了所有的 request 中的变量。从中也可以看到访问哪个文件出错,跳到哪个错误页面了,从而进行更详细、更人性化的错误处理。例如,提示可能的正确网址等等。
例如:访问一个不存在的页面 page_not_exist.html,显示的信息为:
request.attribute['javax.servlet.forward.request_uri'] = /page_not_exists.html
request.attribute['javax.servlet.forward.context_path'] =
request.attribute['javax.servlet.forward.servlet_path'] = /page_not_exists.html
request.attribute['javax.servlet.forward.path_info'] = /errorpages/404.jsp
request.attribute['javax.servlet.error.message'] = /page_not_exists.html
request.attribute['javax.servlet.error.status_code'] = 404
request.attribute['javax.servlet.error.servlet_name'] = default
request.attribute['javax.servlet.error.request_uri'] = /page_not_exists.html
注意,该错误页面必须大于512字节,否则IE将不予显示。因为IE默认只显示大于512字节的错误页面。Firefox中正常显示。可以添加一些其他信息,将页面大小扩充到512字节以上。如果仍不能显示,请检查IE设置,将该选项选中。
异常处理页面 exception.jsp:
<%@ page contentType="text/html; charset=UTF-8" isErrorPage="true" %>
<%@ page import="java.io.*" %>
<html>
<header>
<title>exception page</title>
<body>
<hr/>
<pre>
<%
response.getWriter().println("Exception: " + exception);
if(exception != null)
{
response.getWriter().println("<pre>");
exception.printStackTrace(response.getWriter());
response.getWriter().println("</pre>");
}
response.getWriter().println("<hr/>");
%>
注意isErrorPage熟悉必须为true,才能使用exception对象。exception即捕捉到的异常。此处可以对exception进行处理,比如记录日志、重定向等等。这里把exception trace打印出来了。
500、505 等错误页面的处理类似于404。
相关推荐
这里,`/path/to/custom/404.html`和`/path/to/custom/500.html`应替换为实际存放自定义错误页面的路径。 在Tomcat等Java Web服务器中,我们需要在`web.xml`部署描述符中配置错误页面: ```xml <error-code>404...
主要介绍了在Tomcat中配置404自定义错误页面全解,需要的朋友可以参考下
例如,在Tomcat服务器中,可以在`web.xml`配置文件中添加如下代码来设置404和500错误页面: ```xml <error-code>404</error-code> <location>/404.htm</location> </error-page> <error-code>500</error-code>...
7. **错误处理配置**:Struts2允许自定义错误页面。检查`struts-default.xml`或自定义的配置文件,确认404错误是否被正确地映射到了一个自定义的错误页面。 8. **IDE或服务器设置**:有时候,开发环境或服务器的...
这段配置表示当出现404错误时,Tomcat会尝试显示`/errorPages/404.jsp`页面。 `errorPage`无法使用可能有以下几个原因: 1. **配置问题**:检查`web.xml`文件的语法是否正确,确保没有拼写错误、未闭合的标签或者...
10. **错误处理**:Tomcat提供了一套机制来处理运行时错误和异常,如`ErrorReportValve`和错误页面配置。开发者可以通过API文档了解如何自定义错误报告和处理策略。 通过深入学习和理解Tomcat-9.0-API文档,开发者...
通过`web.xml`中的`error-page`元素,你可以自定义错误页面,处理HTTP状态码或特定异常。 11. **Servlet与JSP** Tomcat作为Servlet和JSP容器,处理HTTP请求并执行相应的Servlet或JSP页面。了解Servlet生命周期和...
- 在Tomcat的`conf/web.xml`文件中,你可以找到并编辑`<error-page>`元素来定义特定的错误代码和对应的错误页面。例如,要为404错误指定一个页面,你可以添加以下代码: ``` <error-code>404</error-code> ...
4. **自定义错误页面**: 创建一个404错误页面,如`/error/404.jsp`,展示给用户友好的错误信息。你可以在页面中包含通用的错误提示,也可以根据需要动态获取更多信息。 5. **测试和调试**: 访问一个不存在的URL...
默认路径通常是`C:\Program Files\Apache Software Foundation\Tomcat 6.0`,但你可以根据需要自定义。 5. **配置端口**:安装过程中可以配置Tomcat使用的默认端口,如HTTP的8080端口和AJAX的8009端口。如果你的系统...
可以自定义错误页面,通过在`web.xml`中配置`error-page`元素,实现特定错误代码的定制响应。 11. **JSP与Servlet** Tomcat作为Servlet容器,支持JSP的编译和执行。开发者可以创建`.jsp`文件,Tomcat会在首次请求...
3. **在MyEclipse中配置Tomcat**:通过MyEclipse的服务器视图添加新的服务器,选择Apache Tomcat 6.0,然后指定Tomcat的安装路径。 4. **部署Web应用**:将项目右键点击,选择“发布”或“部署”到已配置的Tomcat...
9. **错误处理**:Tomcat 7.0改进了错误页面处理,可以自定义错误页面并提供更友好的错误报告,便于开发者调试。 10. **国际化支持**:Tomcat 7.0增强了对多语言环境的支持,使得全球化的Web应用部署更为方便。 ...
10. **错误处理**:当发生错误时,Tomcat会生成定制的错误页面。源码中,`ErrorReportValve`类处理错误报告的生成。 通过分析这个源码包,开发者不仅可以了解Tomcat的工作原理,还能学习到Java服务器编程的最佳实践...
Apache Tomcat是一款开源的Java Servlet容器,主要用于实现Java EE中的Web应用服务。在这个"apache-tomcat-8.5.59"版本中,我们关注的是Tomcat的8.5.x系列,这是一个稳定且广泛使用的分支。这个版本适用于Windows 64...
10. **Configurable Error Pages**:允许开发者自定义错误页面,以提供更友好的用户体验。 在解压"apache-tomcat-7.0.68"压缩包后,你会得到一系列目录和文件,包括`bin`(包含启动和停止Tomcat的脚本)、`conf`...
为了避免泄露这些信息,可以通过自定义错误页面来解决这个问题。具体步骤如下: - 打开`{Tomcat安装目录}/conf/web.xml`文件; - 在文件末尾附近添加以下内容: ```xml <error-code>404</error-code> ...