【jsp exception】如何处理jsp页面的错误
根据jsp对错误的处理方式不同可以将其分为局部异常处理和全局异常处理。局部异常处理适用于个别jsp页面,当这些页面发生错误后,采取特殊的处理方式;全局异常处理适用于所有jsp页面,当所有页面发生某些指定错误后,采取同一方式处理。
(1)局部异常处理
局部异常处理主要涉及jsp页面page指令的 errorPage 和 isErrorPage 属性
errorPage 属性用于设置错误处理的jsp页面,如果当前jsp页面内产生了未被捕获的异常,则跳转到errorPage指定的jsp页面进行处理。
isErrorPage 属性用于错误处理页面,只有将jsp页面中的 isErrorPage 属性设置为true,此jsp页面才能被用作错误处理页面,在该jsp的代码中才可以使用exception饮食对象(!不设isErrorPage 会报错!)
错误处理页面dealError.jsp
<%@ page contentType="text/html;charset=gb2312" import="java.util.*" %>
<%@ page import="java.io.PrintWriter"%>
<%@ page isErrorPage="true" %>
<html>
<body>
<%
out.println("out of deal error!\r\n");
exception.printStackTrace(new PrintWriter(out));
%>
</body>
</html>
业务处理页面divide.jsp
<%@ page contentType="text/html;charset=gb2312" import="java.util.*" %>
<%@ page errorPage="dealError.jsp" %>
<html>
<body>
<%
out.println("before exception!");
int x= 1/0;
out.println("after execption!");
%>
</body>
</html>
运行结果:
out of deal error!
java.lang.ArithmeticException: / by zero at org.apache.jsp.divide_jsp._jspService(divide_jsp.java:71) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at
...
...
(2) 全局异常处理
通过在web.xml 文件中添加<error-page>配置,可以为整个web应用程序设置异常处理页面。每个<error-page>元素用于设置一种异常或者一个HTTP错误状态码的处理页面。
web.xml 中的示例代码如下:
<!-- 依据HTTP错误状态码设置错误处理页面 -->
<error-page>
<error-code>404</error-code>
<location>/errorhandler.jsp</location>
</error-page>
<!-- 依据异常类型设置错误处理页面 -->
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errorhandler.jsp</location>
</error-page>
在上述代码中,<error-page>元素中的子元素<exception-type> 和<error-code>,两者是二选一的关系
错误处理页面errorhandler.jsp
<%@ page contentType="text/html;charset=gb2312" import="java.util.*" %>
<%@ page isErrorPage="true" %>
<html>
<body>
错误码: <%=request.getAttribute("javax.servlet.error.status_code") %><br/>
讯息: <%=request.getAttribute("javax.servlet.error,message") %> <br/>
例外: <%=request.getAttribute("javax.servlet.error.exception_type") %><br/>
</body>
</html>
运行结果(如servlet 中某一句前加一个~ 使其编译失败):
错误码: 500
讯息: null
例外: class java.lang.Error
【jsp exception】如何处理jsp页面的错误的更多相关文章
- jsp登录页面,展示错误信息,刷新页面后错误依然存在解决方案
在做登录页面的时候,通常使用form表单同步提交的方法进行提交的,也就是在form表单里去写action,如果登录失败,jsp通过jstl表达式获取错误信息展示在页面上,但是有一个问题就是,即使你刷新 ...
- JSP的几个页面指令
页面指令:向服务器说明页面自身的特征,以便服务器. 1,<%@page contentType="text/xml;charset=utf-8" %> 客户端---&g ...
- JSP隐式对象是JSP容器为每个页面提供的Java对象
JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 reque ...
- 报错:严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [/index.jsp (line: 13, column: 20) No tag "textfiled" defined in tag library imported with prefix
严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [ ...
- JSP动作跳转页面的时候与根目录的问题
在JSP动作:<jsp:forward page="....">中,这个page属性所指定的页面要包含根目录的话,必须要用"/",不能够用" ...
- Jsp与servlet之间页面跳转及参数传递实例(转)
原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...
- Web jsp开发学习——实现页面跳转和传参
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...
- JSP生成静态Html页面
[转载]JSP生成静态Html页面 在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewr ...
- 027 SSM综合练习03--数据后台管理系统--product-list.jsp和main.jsp页面制作
1.product-list.jsp页面制作 (1)创建一个product-list1.jsp文件,清空,只保留 <%@ page contentType="text/html;cha ...
随机推荐
- 【转】ActiveMQ与虚拟通道
郑重提示,本文转载自http://shift-alt-ctrl.iteye.com/blog/2065436 ActiveMQ提供了虚拟通道的特性(Virtual Destination),它允许一个 ...
- 2016NEFU集训第n+3场 G - Tanya and Toys
Description In Berland recently a new collection of toys went on sale. This collection consists of 1 ...
- DigitalOcean VPS简介
DigitalOcean是一家位于美国的云主机服务商,总部位于美国纽约,成立于2012年.由于价格低廉,高性能配置.灵活布置的优势,近些年来发展迅猛,成为中国站长圈们喜爱的品牌.(访问http://w ...
- C#第四天
2.类语法:[public] class 类名{ 字段; 属性; 方法;}写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化.使用关键字 n ...
- iOS 计算两个坐标之间的距离
//第一个坐标 CLLocation *before=[[CLLocation alloc] initWithLatitude:29.553968 longitude:106.538872]; //第 ...
- tomcat下同时部署两个项目不能正常启动的问题
在部署两个项目,这两个项目都是采用了一个框架,只是业务系统进行了修改.部署的时候发现启动有问题.会报类似下边的错误 Web app root system property already set t ...
- 配置php开发环境
安装apache 1 loadModule 加载php的模块2 addType 告诉apache凡是php结尾的文件都交给php模块执行3 PHPIniDir 告诉apache php.ini的文件在 ...
- android mediaplayer
- Android自动测试之monkeyrunner工具
monkeyrunner工具 前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括 android测试框架.CTS.Monkey.Monkeyr ...
- 如何禁用电脑USB接口
方法一,BIOS设置法 重新启动计算机,在开机过程中,点击键盘上的“Delete”键,进入BIOS设置界面,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Cont ...