第3.54课 上课 Servlet进阶, Servlet生命周期, Servle…

 

</error-page>

  动态的异常处理Servlet

   配置

<!-- 指定TestException异常的处理方式 -->

<error-page>

<exception-type>com.yayadou.exception.TestException</exception-type>

<location>/ex</location>

</error-page>

 

<!-- 定义异常处理类 -->

<servlet>

<servlet-name>ExceptionServlet</servlet-name>

<servlet-class>com.yayadou.exception.ExceptionServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ExceptionServlet</servlet-name>

<url-pattern>/ex</url-pattern>

</servlet-mapping>

   异常处理类

//异常处理的Servlet

public class ExceptionServlet extends HttpServlet {

 

@Override

protected void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

response.getWriter().println("出现了异常");

response.getWriter().println("<br/>");

 

// 获取所有请求的属性名字

Enumeration<String> names = request.getAttributeNames();

while (names.hasMoreElements()) {

String name = names.nextElement();

Object o = request.getAttribute(name);

 

response.getWriter().println(name);

response.getWriter().println("=");

response.getWriter().println(o);

response.getWriter().println("<br/>");

}

 

//获取异常类型

Class<?> cla = (Class<?>) request.getAttribute("javax.servlet.error.exception_type");

 

//获取异常的提示信息

String message = (String) request.getAttribute("javax.servlet.error.message");

 

//获取异常对象

Exception ex = (Exception) request.getAttribute("javax.servlet.error.exception");

 

response.getWriter().println("异常类型:" + cla.getName());

response.getWriter().println("<br/>");

response.getWriter().println("异常信息:" + message);

response.getWriter().println("<br/>");

 

//输出异常堆栈的信息

response.getWriter().println("异常堆栈<br/>");

StackTraceElement[] eles = ex.getStackTrace();

PrintWriter out = response.getWriter();

for(StackTraceElement ele : eles){

out.println("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;");

out.print(ele.getClassName());

out.print(".");

out.print(ele.getMethodName());

out.print("(");

out.print(ele.getFileName());

out.print(":");

out.print(ele.getLineNumber());

out.print(")<br/>");

}

}

 

}

posted on 2018-01-31 23:09  東風★破  阅读(106)  评论(0)    收藏  举报

导航