`

Tomcat中404/500 错误,自定义错误页面

阅读更多

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。

分享到:
评论

相关推荐

    在Tomcat中配置404自定义错误页面详解

    主要介绍了在Tomcat中配置404自定义错误页面全解,需要的朋友可以参考下

    tomcat6、7、8、9, maven3.5

    的Apache Tomcat 5.5.X支持相同的Servlet和JSP规范版本的的Apache Tomcat 5.0.x中 还有在许多领域显著变化引擎盖下,从而提高了性能,稳定性和总拥有成本。有关详细信息,请参阅Apache Tomcat 5.5 Changelog。 的...

    jsp自定义标签实例

    这是本人自己写的,里面包括传参与不传参的标签,很方便,步骤很详细。所有就上传上来了。

    springboot、dubbo学习资料(推荐)

    Spring Boot默认使用嵌入式Tomcat,默认没有页面来处理404等常见错误。因此,为了给用户最佳的使用体验,404等常见错误需要我们自定义页面来处理。

    nginx生产环境配置+错误页面+jar启动终止脚本

    包含了springboot 打包jar部署的一键启动和终止脚本(.sh)、nginx生产环境配置文件(.conf)参考示例和自定义错误页面资源,适合中小公司(个人)Linux系统部署springboot项目

    security-test:Spring安全测试

    -403和404错误页面 -通过JDBC验证用户和密码 -BCrypt保护密码 -Https支持 -运行时重载权限 -启用Csrf Https支持 要启用https,请执行以下步骤: 本示例假设您使用的是Tomcat服务器。 打开一个终端,转到TOMCAT_...

    fckedit编辑器

    3 把tomcat安装目录下/server/lib中的catalina-ant.jar拷贝到/WEB-INF/lib目录 下 4 打开build.xml 找到 修改成你自己的tomcat安装目录 &lt;property value="/home/uniquejava/tool/tomcat5028/"/&gt; 找到 修改...

    单点登录sso-shiro-cas-maven

    -- 配置验证错误时的失败页面 --&gt; ${shiro.failureUrl}" /&gt; ${shiro.successUrl}" /&gt; &lt;/bean&gt; &lt;!-- 配置验证错误时的失败页面 --&gt; ${shiro.logoutUrl}" /&gt; &lt;/bean&gt; &lt;!-- 认证通过后的默认角色 --&gt;...

    JSP开发实用技术整理

    1.错误页404或500等显示页面配置 1 2.过滤器配置 1 3.编码过滤的类写法 2 4.一般过滤类的写法 3 5.Hibernate事务写法(1) 4 6.Hibernate查询(1) 4 7.网页中&lt;%if%&gt; 5 8.java简单的获取系统网卡mac地址 5 9. 增加tomcat...

    超级有影响力霸气的Java面试题大全文档

     异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获...

    22春“计算机科学与技术”专业《web技术》在线作业一答案参考6.docx

    在ASP.NET服务器验证控件中,能够验证自定义正则表达式的控件是( )。 A.RequiredFieldValidator B.RegularExpressionValidator C.RangeFieldValidator D.CompareValidator 参考答案:B 13. 两个Web页面之间传递信息...

    cas-overlay-template-6.4 服务端代码

    4.CAS-自定义错误信息 5.CAS-识别json文件 6.CAS-页面缓存记住我 7.CAS-cookie设置 8.CAS-tgc设置 9.CAS-登出 10.CAS-redisCluster集群存储ticket(相应redis必须配置成cluster集群) 11.CAS-加密存储ticket 12.CAS-...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    这个错误是因为Tomcat7 中没有 JSTL 的jar包,现在已经在项目pom.xml 中增加了如下 jar 的引入管理。 &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;jstl&lt;/artifactId&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;/dependency...

    JavaMelody能够监测Java或Java EE应用程序服务器.rar

    并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周...

    基于JavaWEB+SSM+mysql框架构建的在线商城系统源码+数据库+项目说明(课程设计).zip

    若在Tomcat中部署,Maven文件中已经配置好直接在线部署,使用 maven tomcat7:deploy 可直接在线部署 (需先配置好Tomcat) 3. 导入数据库small.sql,在 \src\main\resources\jdbc.properties 中配置数据库 4. ...

    大学生互动平台1(ssh+ext+jfreechart+部分报表功能)

    最近又新上传了一个大学生社团互动平台管理系统,是这个系统的改良版,,多加了用log4j实现的日志系统,项目运行时会打印Debug级别以上的信息到E盘scstnddd.log日志文件中,方便调试与查出错误。还用自定义的过滤器...

    光明在线页面编辑器「Luminate Online Page Editor」-crx插件

    *添加了对编辑为PageBuilder页面,StoryBuilder文章和事件创建的自定义TellAFriend页面的支持。版本:1.9(05-JUL-2013)*修复了从JServ迁移到Tomcat后,Luminate Online URL语法更改引起的错误。版本:1.8(2013年3...

    Jetty中文手册

    如何配置自定义错误页面(Custom Error Pages) 配置Jetty Statistics(统计) 配置Jetty Statistics教程 配置Request Log教程 Java-monitor 故障排除 如何使用Jetty Dump Feature(特性) Webtide Blog–Jetty ...

Global site tag (gtag.js) - Google Analytics