JavaEE 5开发指南学习(创建和部署jsp的web应用3,包含1,2,3的源码)

处理未预期的异常有两种方式,通过 page指令和通过 部署描述文件(通常是web.xml)
第一种:例如用errorPage属性:<%@ page errorPage="/WEB-INF/errorPage.jsp" %>   缺点:只能为jsp页面中的所有异常设定唯一的错误页面。
第二种:可为单个jsp页面中出现的多个异常指定不同的出错页面。JSP中指定的错误页面优先级高于部署描述文件中指定的错误页面。
有两种类型的错误页面: java异常html错误
为java异常指定错误页面:
<error-page>
 <exception-type>java.lang.NumberFormatException</exception-type>
 <location>/WEB-INF/BadNumber.jsp</location>
</error-page>
为html错误指定错误页面:
<error-page>
 <exception-code>404</exception-code>
 <location>/WEB-INF/NoSuchPage.jsp</location>
</error-page>


<error-page>主体比较简单,必须有一个<exception-type>(异常类的全名)或<exception-code>(的值必须是一个由HTTP规范定义的有效的HTTP错误代码)元素。

在jsp页面上添加异常处理的例子:
在前一个例子的基础上添加异常处理。
总体项目目录如下图:

JavaEE 5开发指南学习(创建和部署jsp的web应用3,包含1,2,3的源码)

Threading.jsp
<%@ page errorPage = "/WEB-INF/errorPage.jsp" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%Integer i = new Integer("string"); %>
</body>
</html>

一调用会抛出java.lang.NumberFormatException异常
errorPage.jsp修改如下:
<%@ page isErrorPage="true" import = "java.io.PrintWriter" %>
<html>
<head>
<title>error</title>
</head>
<body>
<h1>Error</h1>
There was an error.
<p><% exception.printStackTrace(new PrintWriter(out)); %>
<%@ include file = "/WEB-INF/footer.jspf" %>
</body>
</html>

errorPage.jsp使用page指令,把isErrorPage指定为true,如果页面没有这个属性就不能访问内置对象

exception。最后因为根本不存在Strings_and_StringBuffer.jsp页面,服务器会产生一个HTTP 404的错误。

这个错误匹配了web.xml文件中的<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/NoSuchPage.jsp</location>
  </error-page>
....
配置部署文件web.xml的部分内容如下:
<welcome-file-list>
    <welcome-file>welcome.jsp</welcome-file>
  </welcome-file-list>
  
  <error-page>
    <exception-type>java.lang.NumberFormatException</exception-type>
    <location>/WEB-INF/BadNumber.jsp</location>
  </error-page>
  
  <error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/NoSuchPage.jsp</location>
  </error-page>

jsp的include和forward操作
使用标准操作元素:<jsp:include>和<jsp:forward>
使用include指令,如<%@ include file="/WEB-INF/footer.jspf"%>,被包含的文件可以不是一个完整的jsp文件。
而include操作必须是有效的jsp页面或servlet。
项目源码见附件:

你可能感兴趣的:(html,jsp,Web,xml,javaee)