`
xutao5641745
  • 浏览: 223405 次
  • 性别: Icon_minigender_1
  • 来自: 汨罗
社区版块
存档分类
最新评论

400 500 503错误的配置

 
阅读更多

最近工作中,社区为了提高用户感受,对三种异常(404/500/503)提供统一的提示页面,同时对于404/500两种错误定义标准的日志输出格式。

 

404与500错误的配置

请去掉程序中原来通过Spring的ExceptionResolver处理异常页面的配置,关于ExceptionResolver的适用性可参考下面的说明。

  • 适用于所有与业务相关的异常情况的处理,也就是说通过ExceptionResolver可以处理所有在应用程序中显式抛出的异常。例如当进行各种银行账户操作时,程序可能在不同位置抛出余额不足的异常,这时可通过ExceptionResolver将页面请求转发到统一的账户余额不足的错误显示页面
  • 对于所有因为程序的不可预见原因引发的异常情况,应采用下面的异常处理页面进行处理

web.xml的配置

增加如下代码片段:

<error-page>
    <error-code>404</error-code>
    <location>/指向/异常显示页面的地址</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/指向/异常显示页面的地址</location>
</error-page>

异常显示页面

可参考error_all.jsp

<%@page contentType="text/vnd.wap.wml;charset=UTF-8"%><?xml version="1.0" encoding="UTF-8"?><%
int statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
String message = (String) request.getAttribute("javax.servlet.error.message");
String servletName = (String) request.getAttribute("javax.servlet.error.servlet_name");
String uri = (String) request.getAttribute("javax.servlet.error.request_uri");
Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception");
Class exception = (Class) request.getAttribute("javax.servlet.error.exception_type");
if(statusCode == 500) {
    LOGGER.error(statusCode + "|" + message + "|" + servletName + "|" + uri + "|" + exception.getName(), t); 
}
else if(statusCode == 404) {
    LOGGER.error(statusCode + "|" + message + "|" + servletName + "|" + uri); 
}

String queryString = request.getQueryString();
String url = uri + (queryString == null || queryString.length() == 0 ? "" : "?" + queryString);
url = url.replaceAll("&amp;", "&").replaceAll("&", "&amp;");

%><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1_1.dtd">
<wml>
<card title="页面<%=statusCode%>错误">
<p><%
if(statusCode == 404) {
%>对不起,暂时没有找到您所访问的页面地址,请联系管理员解决此问题.<br/><br/>
<a href="<%=url%>">刷新,看看是否能访问了</a><br/><%
}
else {
%>对不起,您访问的页面出了一点内部小问题,请<a href="<%=url%>">刷新一下</a>重新访问,或者先去别的页面转转,过会再来吧~<br/><br/><%
}
%><anchor>返回刚才页面<prev/></anchor><br/>
<a href="http://i.kong.net/<%=request.getAttribute("uid") != null ? "?uid=" + request.getAttribute("uid") : ""%>">返回空中家园首页</a><br/>
<br/>
</p>
</card>
</wml>
<%!
    private static final org.apache.commons.logging.Log LOGGER = org.apache.commons.logging.LogFactory.getLog("Page_Errors");
%>

 

  • 错误信息的输出格式

    类似于:

    ERROR 08/10/27 15:22:58 Page_Errors - 404|resin-jsp|/f/s.jsp
    ERROR 08/10/27 15:25:03 Page_Errors - 500|null|/f/i/g.jsp|java.lang.RuntimeException
  • 第一项: 错误代码(javax.servlet.error.status_code)
  • 第二项: servlet名称(javax.servlet.error.servlet_name)
  • 第三项: 请求的URI(javax.servlet.error.request_uri)
  • 第四项: 异常的类名(javax.servlet.error.exception_type),只在500时出现

log4j的配置

<appender name="PAGE_ERROR_ROLLING" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="实际的日志路径" />
    <param name="Encoding" value="GBK" />
    <param name="ImmediateFlush" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p %d{yy/MM/dd HH:mm:ss} - %m%n" />
    </layout>
</appender>
<logger name="Page_Errors">
    <level value="ERROR" />
    <appender-ref ref="PAGE_ERROR_ROLLING" />
</logger>

503错误的配置

apache中http.conf的配置

ErrorDocument 503 http://i.kong.net/503.jsp
分享到:
评论

相关推荐

    nginx错误页面包括404 403 500 502 503 504等页面,只需都跳转到400页面

    nginx错误页面包括404 403 500 502 503 504等页面,只需都跳转到400页面,配置过程 error_page 404 403 500 502 503 504 /404.html; location = /404.html { root /usr/local/nginx/html; }

    IIS6.0 IIS,互联网信息服务

    在本地路输入框后点击浏览可以更改网站所在文件位置,默认目录为:C:\Inetpub\wwwroot 在执行权限后面点击配置-调试-教本错误信息,选中:向客户端发送文本错误信息:处理 URL 时服务器出错。请与系统管理员联系。...

    SQL.Server.2008管理员必备指南.part2.rar(2/4)

     3.2.5 配置服务转储目录、错误报告和客户反馈报告 58  3.3 管理网络和SQL本地客户端配置 59  3.3.1 管理连接配置 60  3.3.2 配置Shared Memory网络配置 62  3.3.3 配置Named Pipes网络配置 62  3.3.4 配置TCP...

    SQL.Server.2008管理员必备指南.part1.rar(1/4)

     3.2.5 配置服务转储目录、错误报告和客户反馈报告 58  3.3 管理网络和SQL本地客户端配置 59  3.3.1 管理连接配置 60  3.3.2 配置Shared Memory网络配置 62  3.3.3 配置Named Pipes网络配置 62  3.3.4 配置TCP...

    SQL.Server.2008管理员必备指南.part3.rar(3/4)

     3.2.5 配置服务转储目录、错误报告和客户反馈报告 58  3.3 管理网络和SQL本地客户端配置 59  3.3.1 管理连接配置 60  3.3.2 配置Shared Memory网络配置 62  3.3.3 配置Named Pipes网络配置 62  3.3.4 配置TCP...

    SQL.Server.2008管理员必备指南.part4.rar(4/4)

     3.2.5 配置服务转储目录、错误报告和客户反馈报告 58  3.3 管理网络和SQL本地客户端配置 59  3.3.1 管理连接配置 60  3.3.2 配置Shared Memory网络配置 62  3.3.3 配置Named Pipes网络配置 62  3.3.4 配置TCP...

    RED HAT LINUX 6大全

    7.2.10 普通的sendmail配置错误 128 7.3 POP 128 7.3.1 配置POP服务器 128 7.3.2 配置ipop3d 128 7.3.3 APOP如何工作 129 7.3.4 设置APOP验证 130 7.3.5 POP3协议 130 7.4 IMAP 130 7.5 邮件获取 131 7.5.1 配置...

    C#.net_经典编程例子400个

    130 实例095 使用ErrorProvider组件验证文本框输入 130 实例096 利用ErrorProvider组件查看数据集中的错误 132 3.3 EventLog组件 134 实例097 使用EventLog组件读写Windows系统事件日志 134 ...

    Git权威指南PDF完整版

    7.2 用 reflog 挽救错误的重置/ 95 7.3 深入了解git reset命令/ 96 第8章 Git 检出/ 99 8.1 HEAD 的重置即检出/ 99 8.2 挽救分离头指针/ 102 8.3 深入了解 git checkout 命令/ 103 第9章 恢复进度/ 105 9.1 继续暂存...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例001 通过AppServ配置PHP开发环境 3 实例002 AppServ应用技巧 6 实例003 第1个PHP程序 7 1.2 XAMPP——PHP集成化安装包 8 实例004 通过XAMPP配置PHP开发环境 8 实例005 测试XAMPP是否安装成功 11 实例006 XAMPP...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例001 通过AppServ配置PHP开发环境 3 实例002 AppServ应用技巧 6 实例003 第1个PHP程序 7 1.2 XAMPP——PHP集成化安装包 8 实例004 通过XAMPP配置PHP开发环境 8 实例005 测试XAMPP是否安装成功 11 实例006 XAMPP...

    Delphi开发范例宝典目录

    实例288 系统错误记录 379 实例289 如何将图片从数据库中提取出来 380 实例290 原生ADO应用技术 381 实例291 标准记录编辑界面 383 实例292 获取驱动列表并加载指定的驱动 385 实例293 获取驱动所支持的...

    Windows内核安全与驱动开发光盘源码

    9.4.5 用户配置的初始化 149 9.4.6 链接给应用程序 151 9.4.7 小结 152 9.5 FAT12/16磁盘卷初始化 152 9.5.1 磁盘卷结构简介 152 9.5.2 Ramdisk对磁盘的初始化 154 9.6 驱动中的请求处理 160 9.6.1 请求的...

    Windows内核安全驱动开发(随书光盘)

    9.4.5 用户配置的初始化 149 9.4.6 链接给应用程序 151 9.4.7 小结 152 9.5 FAT12/16磁盘卷初始化 152 9.5.1 磁盘卷结构简介 152 9.5.2 Ramdisk对磁盘的初始化 154 9.6 驱动中的请求处理 160 9.6.1 请求的...

    Oracle8i_9i数据库基础

    §2.5 配置会话环境 82 §2.5.1 ARRAYSIZE(取回的行数) 82 §2.5.2 AUTOCOMMIT(自动提交) 83 §2.5.3 LINESIZE(行显示宽度) 83 §2.5.4 LONG(长类型显示字节数) 83 §2.5.5 PAGESIZE(页行数) 83 §2.5.6 PAUSE...

    java-servlet-api.doc

    init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。 Servlet处理请求\r Servlet被初始化...

    C#全能速查宝典

    1.1.5 Console类——控制台中的输入流、输出流和错误流 6 1.1.6 Convert类——类型转换 8 1.1.7 常量——值不改变的量 9 1.1.8 Dispose方法——释放资源 10 1.1.9 迭代器——相同类型的值的有序序列的一段代码 10 ...

Global site tag (gtag.js) - Google Analytics