出现异常的servlet
package com.test;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test1")
public class MainServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int i=5/0;
}
}
统一处理异常的servlet
package com.test;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/errorHander")
public class ErrorServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("全局异常捕获");
//捕获异常信息
Throwable ex = (Throwable) req.getAttribute("javax.servlet.error.exception");
int statusCode = (int) req.getAttribute("javax.servlet.error.status_code");
String servletName = (String) req.getAttribute("javax.servlet.error.servlet_name");
String requestURI = (String) req.getAttribute("javax.servlet.error.request_uri");
System.out.println(ex);
System.out.println(servletName);
System.out.println(requestURI);
System.out.println(req.getMethod());
//对返回页面做出处理
resp.setStatus(200);
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
writer.write("<h1>网络超时</h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
配置
<!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>
<display-name>Archetype Created Web Application</display-name>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorHander</location>
</error-page>
</web-app>
此时反馈给用户的报错信息就会变成下图所示: