1.web.xml 配置

<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>

2.定义404.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" isErrorPage="true"%>
<%response.setStatus(HttpServletResponse.SC_OK); %> <h1>您所查看的商品或页面没有找到</h1>

3.定义500.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" isErrorPage="true"%>
<%response.setStatus(HttpServletResponse.SC_OK); %> <h1>很抱歉,您访问的页面出错了!</h1> <div id="errorMessageDiv" style="display:;">
<pre>
<%
try { //全部内容先写到内存,然后分别从两个输出流再输出到页面和文件
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(byteArrayOutputStream);
printStream.println(); UserInfoDTO requestUser = (UserInfoDTO)request.getSession().getAttribute("userLogin");
printStream.println("用户信息");
if(requestUser != null){
printStream.println("账号:" + requestUser.getNickname());
}else{
printStream.println("账号:游客");
}
printStream.println("访问的路径: " + request.getAttribute("javax.servlet.forward.request_uri"));
printStream.println(); printStream.println("异常信息");
printStream.println(exception.getClass() + " : " + exception.getMessage());
printStream.println(); Enumeration<String> e = request.getParameterNames();
if (e.hasMoreElements()) {
printStream.println("请求中的Parameter包括:");
while (e.hasMoreElements()) {
String key = e.nextElement();
printStream.println(key + "=" + request.getParameter(key));
}
printStream.println();
} printStream.println("堆栈信息");
exception.printStackTrace(printStream);
printStream.println();
out.print(byteArrayOutputStream); //输出到网页 Calendar calendar = Calendar.getInstance();
/**按年月日来分*/
int year = calendar.get(Calendar.YEAR);//得到年
int month = calendar.get(Calendar.MONTH)+1;//得到月,因为从0开始的,所以要加1
int day = calendar.get(Calendar.DAY_OF_MONTH);//得到天 String saveurl = Constants.ROOTPATH + "errorLog/";
String path1 = saveurl + year + "/" ;
String path2 = saveurl + year + "/" + month + "/" ;
String path3 = saveurl + year + "/" + month + "/" + day + "/" ; //建立按年月日文件夹,如果文件夹不存在,就建立新的文件夹。
FileOperate.newFolder(path1);
FileOperate.newFolder(path2);
FileOperate.newFolder(path3); //System.err.print("AAAAA"+request.getRealPath("/errorLog")); //项目的根目录
//File dir = new File(request.getRealPath("/errorLog"));
File dir = new File(path3);
//if (!dir.exists()) {
// dir.mkdir();
//} String timeStamp = new SimpleDateFormat("yyyyMMddHHmmssS").format(new Date());
FileOutputStream fileOutputStream = new FileOutputStream(new File(dir.getAbsolutePath() + File.separatorChar + "error-" + timeStamp + ".txt"));
new PrintStream(fileOutputStream).print(byteArrayOutputStream); //写到文件
} catch (Exception ex) {
ex.printStackTrace();
}
%>
</pre>
</div>

网站404,500错误页面的处理,及500异常写入errorLog日志的更多相关文章

  1. apache 网页301重定向、自定义400/403/404/500错误页面

    首先简单介绍一下,.htaccess文件是Apache服务器中的一个配置文件(Nginx服务器没有),它负责相关目录下的网页配置.通过对.htaccess文件进行设置,可以帮我们实现:网页301重定向 ...

  2. 新西兰程序员 ASP.NET网站中设置404自定义错误页面

    新西兰程序员 ASP.NET网站中设置404自定义错误页面 在用ASP.NET WebForm开发一个网站时,需要自定义404错误页面. 做法是这样的 在网站根目录下建立了一个404.html的错误页 ...

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

    这篇文章主要介绍了在Tomcat中配置404自定义错误页面全解,需要的朋友可以参考下 一直使用tomcat,今天想到一个问题,自定义404错误页面, 为了获得很好的用户感受,是不应当向用户暴露404这 ...

  4. ASP.NET网站中设置404自定义错误页面

    在用ASP.NET WebForm开发一个网站时,需要自定义404错误页面. 做法是这样的 在网站根目录下建立了一个404.html的错误页面,然后在Global.asax文件中,加入如下代码: &l ...

  5. 【转载】ASP.NET自定义404和500错误页面

    在ASP.NET网站项目实际上线运行的过程中,有时候在运行环境下会出现400错误或者500错误,这些错误默认的页面都不友好,比较简单单调,其实我们可以自行设置这些错误所对应的页面,让这些错误跳转到我们 ...

  6. 自定义 404 与 500 错误页面,URL 地址不会重定向(一)

    对于 404 与 500 错误发生时,我们希望自己定义一个更加人性化的页面. 例子 当访问下面这个地址时: http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg ...

  7. SpringMVC 指定404、500错误页面

    1.在web.xml中追加 <error-page> <error-code>404</error-code> <location>/404</l ...

  8. 自定义 404 与 500 错误页面,URL 地址不会重定向(二)

    上一篇是使用了全局过虑器来实现,还可以使用 HttpApplication 来处理. 参考文章: http://www.cnblogs.com/dudu/p/aspnet_custom_error.h ...

  9. Nginx 自定义404、500错误页面跳转

    自定义Nginx错误界面跳转 1.开启Nginx.conf配置文件下的自定义接口参数. http { fastcgi_intercept_errors on; } 2.在Server区域添加自定义的错 ...

随机推荐

  1. Android PullToRefresh下拉刷新控件的简单使用

    PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...

  2. 如何设置Win7系统中的上帝模式GodMode(转载)

    如何设置Win7系统中的上帝模式GodMode(转载) NT6系统中隐藏了一个秘密的“GodMode”,字面上译为“上帝模式”.God Mode其实就是一个简单的文件夹窗口,但包含了几乎所有系统的设置 ...

  3. linux/centos下安装nginx(rpm安装和源码安装)详细步骤

    Centos下安装nginx rpm包                                                                                 ...

  4. python遍历目录文件脚本的示例

    例子 自己写的一个Python遍历文件脚本,对查到的文件进行特定的处理.没啥技术含量,但是也记录一下吧. 代码如下 复制代码 #!/usr/bin/python# -*- coding: utf-8 ...

  5. SQL语句基本概念

    星期五 2014年11月21日 SQL语句:     sql语句用于检索维护数据库中的数据                   [ create alter Select update        ...

  6. 《APUE》第五章练习1

    题目:用setvbuf实现setbuf. 这两个函数都是改变流的缓冲模式的.函数原型如下: #include <stdio.h> void setbuf(FILE *fp, char *b ...

  7. linux与windows共享剪贴板(clipboard)

    linux与windows共享剪贴板(clipboard)的方法 先说两句废话,其实linux和windows之间不需要共享剪贴板,直接在putty中,按住SHIFT+鼠标选择就可以了. 但是作为一种 ...

  8. 在Windows下设置环境变量 运行mysql程序变得更容易

    在Windows下设置环境变量,点开始菜单,右键单击我的电脑--属性--高级--环境变量 可以看到PATH的变量是这样的: C:\WINDOWS;C:\WINDOWS\COMMAND   为了让运行m ...

  9. javascript的setTimeout以及setInterval休眠问题。

    前端码农们在做项目中时候,必定不可少的需要做到轮播效果.但是有些特殊的需求,比如: 需要做到第一个容器内容轮播滚动之后,第二个容器内部再轮播滚动,再第三个容器内容轮播滚动. 这时候我的一开始的思路是: ...

  10. [Testing] 測試理論電子文件

    File path http://files.cnblogs.com/vincentmylee/TestTheory.7z