Servlet的异常处理机制
- <error-page>
- <error-code>404</error-code>
- <location>/FileNotFound.html</location>
- </error-page>
- package servlet;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class HttpErrorHandlerServlet extends HttpServlet
- {
- protected void service(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, java.io.IOException
- {
- resp.setContentType("text/html;charset=GB2312");
- PrintWriter out = resp.getWriter();
- Integer status_code=(Integer)req.getAttribute("javax.servlet.error.status_code");
- out.println("<html><head><title>错误页面</title></head>");
- out.println("<body>");
- //如果你的JDK版本低于1.5,那么你应该按照如下方式调用
- //int status=status_code.intValue();
- //switch(status){...}
- switch(status_code)
- {
- case 401:
- break;
- case 404:
- out.println("<h2>HTTP状态代码:"+status_code+"</h2>");
- out.println("你所访问页面并不存在,或者已经被移动到其它位置。");
- out.println("
如有其它问题,请<a href=mailto:admin@sunxin.org>联系管理员</a>。");
- break;
- default:
- break;
- }
- out.println("</body></html>");
- out.close();
- }
- }
- package org.sunxin.ch06.servlet;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.util.Properties;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class FileExceptionServlet extends HttpServlet
- {
- public void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException,IOException
- {
- FileInputStream fis=new FileInputStream("config.inc");
- Properties pps=new Properties();
- pps.load(fis);
- //读取属性的代码,省略。
- fis.close();
- }
- }
- package servlet;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class ExceptionHandlerServlet2 extends HttpServlet
- {
- protected void service(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, java.io.IOException
- {
- resp.setContentType("text/html;charset=GB2312");
- PrintWriter out = resp.getWriter();
- out.println("<html><head><title>错误页面</title></head>");
- out.println("<body>");
- String uri=(String)req.getAttribute("javax.servlet.error.request_uri");
- Object excep=req.getAttribute("javax.servlet.error.exception");
- out.println(uri+" 运行错误。");
- out.println("<p>错误原因:"+excep);
- out.println("</body></html>");
- out.close();
- }
- }
- <error-page>
- <exception-type>java.io.FileNotFoundException</exception-type>
- <location>/ExcepHandler</location>
- </error-page>
- catch(SQLException se)
- {
- getServletContext().log("ServletContext.log(): 数据库操作失败!"+
- se.toString());
- log("GenericServlet.log(): 数据库操作失败!"+se.toString());
- resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- "数据库操作出现问题,请联系管理员。");
- }
- try
- {
- int a=5;
- int b=0;
- int c=a/b;
- }
- catch(ArithmeticException ae)
- {
- req.setAttribute("javax.servlet.error.exception",ae);
- req.setAttribute("javax.servlet.error.request_uri",req.getRequestURI());
- RequestDispatcher rd=req.getRequestDispatcher("ExcepHandler2");
- rd.forward(req,resp);
- }
处理异常的Servlet
- package servlet;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class ExceptionHandlerServlet2 extends HttpServlet
- {
- protected void service(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, java.io.IOException
- {
- resp.setContentType("text/html;charset=GB2312");
- PrintWriter out = resp.getWriter();
- out.println("<html><head><title>错误页面</title></head>");
- out.println("<body>");
- String uri=(String)req.getAttribute("javax.servlet.error.request_uri");
- Object excep=req.getAttribute("javax.servlet.error.exception");
- out.println(uri+" 运行错误。");
- out.println("<p>错误原因:"+excep);
- out.println("</body></html>");
- out.close();
- }
- }
说明:
[1] 将异常对象和抛出异常的servlet的位置作为HttpServletRequest对象的属性保存到请求对象中。
[2] 通过请求对象的getRequestDispatcher()方法得到RequestDispatcher对象 调用RequestDispatcher对象的forward()方法将请求转发给 ExcepHandler2
[3] ExcepHandler2可以从请求对象中取出javax.servlet.error.exception和javax.servlet.error.request_uri属性
Servlet的异常处理机制的更多相关文章
- JSP的执行过程及其异常处理机制
1.JSP的执行过程 虽然JSP感觉上很像一般的HTML网页,但事实上它是以Servlet的形式被运行的.因为JSP文件在第一次运行的时候会先解释成Servlet源文件,然后编译成Servle ...
- SpringMVC异常处理机制
SpringMVC异常处理机制 springMVC会将所有在doDispatch方法中的异常捕获,然后处理.无法处理的异常会抛出给容器处理. 在doDispatch()中调用processDispat ...
- Atititjs javascript异常处理机制与java异常的转换.js exception process
Atititjs javascript异常处理机制与java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw err ...
- Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae
Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异 ...
- 分享知识-快乐自己:Spring中的(三种)异常处理机制
案例目录结构: Web.xml 配置: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application ...
- Atititjs javascript异常处理机制java异常转换.js exception process
Atititjs javascript异常处理机制java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw erro ...
- Spring MVC—拦截器,文件上传,中文乱码处理,Rest风格,异常处理机制
拦截器 文件上传 -中文乱码解决 rest风格 异常处理机制 拦截器 Spring MVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerI ...
- Java异常处理机制 try-catch-finally 剖析
Java拥有着强大的异常处理机制,最近初步学习了下,感觉内容还是挺多的,特此来将自己的理解写出来与大家分享. 一. 在Java代码code中,由于使用Myeclipse IDE,可以自动提醒用户哪里有 ...
- JAVA 异常处理机制
主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...
随机推荐
- SpringBoot 静态资源 加载位置
1.配置自定义拦截器 /** * Copyright (C), 2017-2018, XXX有限公司 * FileName: WebConfig * Author: 丶Zh1Guo * Date: 2 ...
- CCF模拟题 最优灌溉
最优灌溉 时间限制: 1.0s 内存限制: 256.0MB 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需 ...
- Peer To Peer——对等网络
今年的考试.大问题没怎么出现. 就是考英语第二天的下午,发生网络阻塞的现象,不影响大局.可是事出有因,我们还是须要看看是什么影响到了考生抽题.最后查了一圈,发现其它几场的英语考试听力都是19M大小,而 ...
- POJ 1006 Biorhythms (数论-中国剩余定理)
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 111285 Accepted: 34638 Des ...
- OpenCASCADE Face Normals
OpenCASCADE Face Normals eryar@163.com Abstract. 要显示一个逼真的三维模型,其顶点坐标.顶点法向.纹理坐标这三个信息必不可少.本文主要介绍如何在Open ...
- [python]CompressionError: bz2 module is not available
事情是这种,在centos6 上本来是python2.6 然后我下载了一个python2.7.5 安装之后,把默认python改动为python2.7.5版本号. 使用pip安装twisted的时候出 ...
- solr 亿万级数据查询性能測试
废话不多说,我电脑配置 i7四核cpu 8G内存 插入数据文档中有5个字段,当中有两个分词.一个int,一个date 批量插入測试一次10万循环10次总共100万用时85秒 批量插入測试一次10万循环 ...
- jquery11源码 animate() : 运动的方法
{ var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/, rfxnum = new RegExp( "^(?:([+-])=|)( ...
- 如何实现对网站页面访问量的统计(javaweb和php)
如何实现对网站页面访问量的统计(javaweb和php) 一.总结 一句话总结:其实很简单啦,每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了. 1.javaweb中 ...
- postgresql sql语句 更改表名
SELECT'alter table "public"."'|| t.tablename||'"'||' rename to "'|| "l ...