- 浏览: 46050 次
- 性别:
- 来自: 沈阳
最新评论
举例说明:mustBeError.jsp
<%@ page contentType="text/html; charset=gb2312"
language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*" errorPage="error.jsp" %>
<%
//这个页面一定会出错。
int i=0;
int j=1;
out.println(j/i);
%>
在此中通过errorPage="error.jsp"来指定出错时错误处理页面
---------------------------
error.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" isErrorPage="true" import="java.io.*"%>
<html>
<head>
<title>出错了!</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
出错了!<br>
发生了以下的错误:
<br><hr><font color=red><hr>
getMessage():<br>
<%=exception.getMessage()%><br><hr>
getLocalizedMessage():<br>
<%=exception.getLocalizedMessage()%><br><hr>
PrintStatckTrace():<br>
<%
StringWriter sw=new StringWriter();
PrintWriter pw=new PrintWriter(sw);
exception.printStackTrace(pw);
out.println(sw);
%><br>
</font></body>
</html>
在error.jsp中,page指令中指定:isErrorPage="true"
<---------------------->
在web.xml中声明异常和错误页面
例如:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<error-page>
<error-code>404</error-code>
<location>/pageNotFound.html</location>
</error-page>
<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/NumberFormatException.html</location>
</error-page>
</web-app>
说明:指定错误代码为404是,调用/pageNotFound.html
也可以指定错误类型如:java.lang.NumberFormatException,出现此错误类型是调用/NumberFormatException.html
文章引用自:http://www.zhuoda.org/air_tuyh/26516.html
=========================
http://www.51cto.com/art/200704/46521.htm
由于JSP文件被编译成Servlet执行,出现异常的默认操作就是显示异常的堆栈。JSP页面提供了重写这个默认行为的功能,并且将异常处理转到另一个文件中:
<%@ page errorPage="error.jsp"%>
这样在这个JSP页面中,如果遇到任何未捕获到的Throwable对象,那么就会显示指定的出错页面。
下面我们来看一个具体的例子。首先我们开发一个会出错的页面,如例程10-10所示。
例程10-10 会出错的页面(mustBeError.jsp)
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*"errorPage="error.jsp" %><%//这个页面一定会出错int i=0;int j=1;//以下代码一定产生运行时错误out.println(j/i);%>
从代码可以看出,这个页面必定会出错误。在这个页面的page指令中,通过errorPage="error.jsp"指定出错时的错误处理页面。
我们来看错误处理页面的具体代码,如例程10-11所示。
例程10-11 错误处理页面(error.jsp)
<%@ page contentType="text/html; charset=gb2312" language="java"isErrorPage="true" import="java.io.*"%><html><head><title>出错了!</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body>出错了!<br>
发生了以下的错误:
<br><hr><font color=red><hr>getMessage():<br><%=exception.getMessage()%><br><hr>getLocalizedMessage():<br><%=exception.getLocalizedMessage()%><br><hr>PrintStatckTrace():<br><%StringWriter sw=new StringWriter();PrintWriter pw=new PrintWriter(sw);exception.printStackTrace(pw);out.println(sw);%><br></font></body></html>
在error.jsp中,首先在page指令中指定:
isErrorPage="true"
这是非常关键的地方,只有这样指定,这个页面才能进行错误处理,才能使用exception对象。
exception对象有几个非常重要的方法,用于获得出错的信息,这些方法如下:
<%=exception.getMessage()%> <%=exception.getLocalizedMessage()%> <% exception.printStackTrace(PrintWriter);%>
最后一个方法用于打印错误堆栈。如果需要在错误页面以外使用这个exception对象,那么可以这样把exception对象保存起来:
session.setAttribute("myError",exception);
在另一个页面使用:
Exception exception=( Exception )session.getAttribute("myError");
把这个异常对象引入进来。
在浏览器里输入:http://127.0.0.1:8080/ch10/mustBeError.jsp。由于这个页面必定产生运行时异常,它将自动调用http://127.0.0.1:8080/ch10/error.jsp页面。运行的效果如图10-3所示。
图10-3 自定义错误页面
以上是JSP页面内部出现错误的处理情况。如果异常在JavaBean中产生,那么将怎么办呢?具体的方法是在JavaBean中把异常抛出到JSP页面,如果JSP页面没有捕获这个异常,那么也到错误页面中处理。我们再来看一个例子,假设有一个JavaBean,用于计算两个整数的和,代码如例程10-12所示。
例程10-12 计算两个整数和的JavaBean(AddJavaBean.java)
package com.jspdev.ch10;//用于计算两个整数的和,可能在Integer.parseInt方法中出现异常public class AddJavaBean{public int add(String x,String y)throws Exception{int ret=0;try{ret=Integer.parseInt(x)+Integer.parseInt(y);}catch(Exception e){throw e;}return ret; }}
在例程10-12中,可能在Integer.parseInt方法中出现异常。当出现这个异常时,就把这个异常抛出到JSP页面。我们看在JSP页面中怎么使用这个类,并且怎么处理异常,如例程10-13所示。
例程10-13 JSP对JavaBean中抛出异常的处理(add.jsp)
<%@ page contentType="text/html; charset=gb2312" import="com.jspdev.ch10.*" language="java" errorPage="error.jsp" %><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><hr><center><% String x=request.getParameter("x");String y=request.getParameter("y");AddJavaBean addBean=new AddJavaBean();%><%=x%>+<%=y%>=<%=addBean.add(x,y)%><hr>add.test<br><form action="add.jsp" method="get"><table><tr><td>x:<input type="text" name="x"></td></tr><tr><td>y:<input type="text" name="y"></td></tr><tr><td><input type="submit" value=add></td></tr></table></form></center></body></html>
从代码可以看出,在这个页面中没有捕获JavaBean中产生的异常,这样就会自动调用错误处理页面。
在浏览器里输入http://127.0.0.1:8080/ch10/add.jsp?x=12&y=112将会运行正常。在表单中填写以下的值:
x=12,y=sdkjf
那么必定产生运行异常,这个异常将在error.jsp中进行处理,如图10-4所示。
当输入以上的值提交后,将在error.jsp中捕获到NumberFormatException,如图10-5所示。
图10-4 在add.jsp中输入会产生异常的信息
图10-5 在error.jsp中处理add.jsp中的异常
<%@ page contentType="text/html; charset=gb2312"
language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*" errorPage="error.jsp" %>
<%
//这个页面一定会出错。
int i=0;
int j=1;
out.println(j/i);
%>
在此中通过errorPage="error.jsp"来指定出错时错误处理页面
---------------------------
error.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" isErrorPage="true" import="java.io.*"%>
<html>
<head>
<title>出错了!</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
出错了!<br>
发生了以下的错误:
<br><hr><font color=red><hr>
getMessage():<br>
<%=exception.getMessage()%><br><hr>
getLocalizedMessage():<br>
<%=exception.getLocalizedMessage()%><br><hr>
PrintStatckTrace():<br>
<%
StringWriter sw=new StringWriter();
PrintWriter pw=new PrintWriter(sw);
exception.printStackTrace(pw);
out.println(sw);
%><br>
</font></body>
</html>
在error.jsp中,page指令中指定:isErrorPage="true"
<---------------------->
在web.xml中声明异常和错误页面
例如:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<error-page>
<error-code>404</error-code>
<location>/pageNotFound.html</location>
</error-page>
<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/NumberFormatException.html</location>
</error-page>
</web-app>
说明:指定错误代码为404是,调用/pageNotFound.html
也可以指定错误类型如:java.lang.NumberFormatException,出现此错误类型是调用/NumberFormatException.html
文章引用自:http://www.zhuoda.org/air_tuyh/26516.html
=========================
http://www.51cto.com/art/200704/46521.htm
由于JSP文件被编译成Servlet执行,出现异常的默认操作就是显示异常的堆栈。JSP页面提供了重写这个默认行为的功能,并且将异常处理转到另一个文件中:
<%@ page errorPage="error.jsp"%>
这样在这个JSP页面中,如果遇到任何未捕获到的Throwable对象,那么就会显示指定的出错页面。
下面我们来看一个具体的例子。首先我们开发一个会出错的页面,如例程10-10所示。
例程10-10 会出错的页面(mustBeError.jsp)
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*"errorPage="error.jsp" %><%//这个页面一定会出错int i=0;int j=1;//以下代码一定产生运行时错误out.println(j/i);%>
从代码可以看出,这个页面必定会出错误。在这个页面的page指令中,通过errorPage="error.jsp"指定出错时的错误处理页面。
我们来看错误处理页面的具体代码,如例程10-11所示。
例程10-11 错误处理页面(error.jsp)
<%@ page contentType="text/html; charset=gb2312" language="java"isErrorPage="true" import="java.io.*"%><html><head><title>出错了!</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body>出错了!<br>
发生了以下的错误:
<br><hr><font color=red><hr>getMessage():<br><%=exception.getMessage()%><br><hr>getLocalizedMessage():<br><%=exception.getLocalizedMessage()%><br><hr>PrintStatckTrace():<br><%StringWriter sw=new StringWriter();PrintWriter pw=new PrintWriter(sw);exception.printStackTrace(pw);out.println(sw);%><br></font></body></html>
在error.jsp中,首先在page指令中指定:
isErrorPage="true"
这是非常关键的地方,只有这样指定,这个页面才能进行错误处理,才能使用exception对象。
exception对象有几个非常重要的方法,用于获得出错的信息,这些方法如下:
<%=exception.getMessage()%> <%=exception.getLocalizedMessage()%> <% exception.printStackTrace(PrintWriter);%>
最后一个方法用于打印错误堆栈。如果需要在错误页面以外使用这个exception对象,那么可以这样把exception对象保存起来:
session.setAttribute("myError",exception);
在另一个页面使用:
Exception exception=( Exception )session.getAttribute("myError");
把这个异常对象引入进来。
在浏览器里输入:http://127.0.0.1:8080/ch10/mustBeError.jsp。由于这个页面必定产生运行时异常,它将自动调用http://127.0.0.1:8080/ch10/error.jsp页面。运行的效果如图10-3所示。
图10-3 自定义错误页面
以上是JSP页面内部出现错误的处理情况。如果异常在JavaBean中产生,那么将怎么办呢?具体的方法是在JavaBean中把异常抛出到JSP页面,如果JSP页面没有捕获这个异常,那么也到错误页面中处理。我们再来看一个例子,假设有一个JavaBean,用于计算两个整数的和,代码如例程10-12所示。
例程10-12 计算两个整数和的JavaBean(AddJavaBean.java)
package com.jspdev.ch10;//用于计算两个整数的和,可能在Integer.parseInt方法中出现异常public class AddJavaBean{public int add(String x,String y)throws Exception{int ret=0;try{ret=Integer.parseInt(x)+Integer.parseInt(y);}catch(Exception e){throw e;}return ret; }}
在例程10-12中,可能在Integer.parseInt方法中出现异常。当出现这个异常时,就把这个异常抛出到JSP页面。我们看在JSP页面中怎么使用这个类,并且怎么处理异常,如例程10-13所示。
例程10-13 JSP对JavaBean中抛出异常的处理(add.jsp)
<%@ page contentType="text/html; charset=gb2312" import="com.jspdev.ch10.*" language="java" errorPage="error.jsp" %><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><hr><center><% String x=request.getParameter("x");String y=request.getParameter("y");AddJavaBean addBean=new AddJavaBean();%><%=x%>+<%=y%>=<%=addBean.add(x,y)%><hr>add.test<br><form action="add.jsp" method="get"><table><tr><td>x:<input type="text" name="x"></td></tr><tr><td>y:<input type="text" name="y"></td></tr><tr><td><input type="submit" value=add></td></tr></table></form></center></body></html>
从代码可以看出,在这个页面中没有捕获JavaBean中产生的异常,这样就会自动调用错误处理页面。
在浏览器里输入http://127.0.0.1:8080/ch10/add.jsp?x=12&y=112将会运行正常。在表单中填写以下的值:
x=12,y=sdkjf
那么必定产生运行异常,这个异常将在error.jsp中进行处理,如图10-4所示。
当输入以上的值提交后,将在error.jsp中捕获到NumberFormatException,如图10-5所示。
图10-4 在add.jsp中输入会产生异常的信息
图10-5 在error.jsp中处理add.jsp中的异常
发表评论
-
resin出现问题:java.lang.Error: Unresolved compilation problems:com.caucho cannot be
2010-08-09 15:24 4026最近resin不知道怎么出现问题了。resin启开后,登陆JS ... -
JSP页面跳转的几个方法
2010-07-25 00:30 7631. RequestDispatcher.forward() ... -
poi之excel导入数据库
2010-07-25 00:25 1052数据库表有这些字段:ID,BOOK_NAME,BOOK_AUT ... -
JexcelApi和POI导入Excel日期识别成数字的解决方案
2010-07-25 00:24 922用过Jxl或者POI导入Excel信息的朋友应该都遇到过这样的 ... -
JSP中两种相对路径的区别
2010-07-25 00:07 955给你看看 希望对你有所帮助!!! 1 JSP、Serv ... -
Java中数组常用方法的总结
2010-07-25 00:07 1675一、Java标准类库提供static方法System.arra ... -
如何在jsp中引用js变量
2010-07-25 00:06 2031JSP数据和JavaScirpt数据交互使用问题的一种解决方法 ... -
关于jsp:include和jsp:param的使用
2010-07-25 00:05 1444========static.html=========== ... -
JSP中的两种包含页面的方法
2010-07-25 00:04 785第一种:include指令:当JSP转换成Servlet时引入 ... -
JSP之session对象
2010-07-25 00:03 741保存及获取属性 index.jsp: <%@page ... -
jsp中的input里面的东西要怎么取出来
2010-07-25 00:02 1212表单元素: <Input type="text ... -
用jsp做页面,怎么样获取当前页面的值
2010-07-25 00:02 1945在当前页面的话如楼上说的可以用javascript获取它的值: ... -
JavaScript使用技巧精萃
2010-07-25 00:00 663(一).确认删除用法: 1. BtnDel.Attribu ... -
JSP动作
2010-07-24 23:59 643JSP动作利用XML语法格式的标记来控制Servlet引擎的行 ...
相关推荐
① 9个内建对象中exception需要在指令配置元素中配置isErrorPage="true"是才会出现。 例如:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" isErrorPage="true"%> ② jsp的工作原理:...
① 9个内建对象中exception需要在指令配置元素中配置isErrorPage="true"是才会出现。 例如:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" isErrorPage="true"%> ② jsp的工作原理:...
① 9个内建对象中exception需要在指令配置元素中配置isErrorPage="true"是才会出现。 例如:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" isErrorPage="true"%> ② jsp的工作原理:...
jsp,el表达式 1. Page指令: <%@ page language="java" import="java.util.*" pageEncoding="utf-8...a) jsp页面异常处理: <%@ page language="java" import="java.util.*" pageEncoding="utf-8" isErrorPage="true"%>
jsp isErrorPage 使用 jsp isErrorPage 使用
isErrorPage="true/false" <br>请大家发表意见
完成商品的列表的展示。 3.jsp指令(3个) jsp的指令是指导jsp翻译和运行的命令,jsp包括三大指令: 1)page指令 --- 属性最多的指令(实际开发中page指令默认) ...isErrorPage:当前页面是一个处理错误的页面
@page isErrorPage=”true”%> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″> <title>JSP Page</title> </head> <body> ...
@ page isErrorPage=true%> <%@ page errorPage=calculator.jsp %> <%@ taglib uri=http://java.sun.com/jsp/jstl/core prefix=c%> <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transition
第13章 在jsp页面中包含文件和applet 13.1 在请求期间包含页面:jsp:include动作 13.2 在页面转换期间包含文件:include指令 13.3 使用jsp:forward转发请求 13.4 包含使用java插件的applet 第14章 ...
如果针对特定的文件,可以使用JSP的page指令中的isErrorPage属性和errorPage属性完成。 如果针对特定类型的错误,可以使用web.xml配置文件。 1 使用进行异常处理 标签可以针对特定的一行或者多行代码。标签的基本...
如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象 序号 方 法 说 明 1 String getMessage() 返回描述异常的消息 2 String toString() 返回关于...
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件...
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件的...
JSP指令,page指令,errorPage和isErrorPage等属性的介绍。
2.下列选项中,(b ) 可以准确地获取请求页面的一个文本框的输入 (文本框的名称为 name) A.request.getParameter(name) B.request.getParameter("name") C.request.getParameterValues(name) D.request....
熟练掌握page指令的下面的属性:import、session、errorPage、isErrorPage、contentType、pageEncoding。 理解page指令的下面的属性:language、extends、buffer、autoFlush、info。