学习目标:
一、exception对象
二、阶段案例:传智书城JSP页面(实现首页)
三、传智书城JSP页面(实现注册页面)
四、总结
一、exception对象
1.1.exception对象概述
在JSP页面中,经常需要处理一 些异常信息,这时,可以通过exception 对象来实现。exception对象是java.lang .Exception类的实例对象,它用于封装JSP中抛出的异常信息。需要注意的是,exception对象只有在错误处理页面才可以使用,即page指令中指定了属性<%@page isErrorPage=“true”%>的页面。接下来,通过一个案例来学习exception 对象的使用。
1.2.exception对象实例:
代码如下(示例):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int a=3;
int b=0;
%>
输出:<%=(a/b) %>
</body>
</html>
public void _jspService(HttpServletRequest request,HttpServletResponse response)
throws java.io.IOException, ServletException{
try{
//所有JSP脚本、静态HTML部分都会转换成此部分代码
response.setContentType("text/html;charset = gb2132");
...
out.write("</BODY>\r\n");
out.write("</HTML>\r\n");
}catch(Throwable t){
...
//处理该异常
if(_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}finally{
//释放资源
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
从上面的代码的第4行可知,JSP脚本和静态HTML部分都将转换成_jspService()方法里的执行性代码——这就是jsp脚本无须处理异常的原因:因为这些脚本已经存在于try块中,一旦try块捕捉到JSP脚本的异常,并且 _jspx_page_context不为null,就会由该对象来处理异常,如上面的代码第12行所示。
_jspx_page_context 对异常的处理也是非常的简单:如果该页面的page指令指定了errorPage属性,将请求foward到errorPage属性指定的页面,否则使用系统指定的页面输出异常信息。
<!--通过errorPage属性指定异常处理页面-->
<%@ page contentType = "text/html; charset = gb2132"
language = "java" errorPage = "error.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3c//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>JSP脚本异常处理机制</title>
</head>
<body>
<%int a = 6;
int c = a/0
%>
</body>
</html>
<!--通过isErrorPage属性指定本页面是异常处理页面-->
<%@ page contentType = "text/html; charset = gb2132"
language = "java" isErrorPage = "true"%>
<!DOCTYPE HTML PUBLIC "-//W3c//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>异常处理页面</title>
</head>
<body>
异常类型是:<%=exception.getClass()%></br>
异常信息是:<%=exception.getMessage()%></br>
</body>
启动Tomcat服务器,在浏览器地址输入地址,浏览器显示的界面如下:
注意:由于只有JSP脚本、输出表达式才会生成_jspx_page_context方法里的代码,所以这两个部分的代码无须处理异常。但是JSP的声明部分依然强制处理checked异常,JSP的异常处理机制对JSP声明不起作用。
在JSP的异常处理机制中,一个异常处理页面可以处理多个JSP页面脚本部分的异常。异常处理页面通过Page指令的errorPage属性确定。
1.3exception对象的常用方法:
二、传智书城JSP页面(实现首页)
实现步骤:
2.1首页设置:
在chapter06项目上的WebContent目录下创建一个名称为index.jsp的页面文件夹,该文件夹使用<jsp.forward>动作元素跳转到项目客户端展示的首页,
其主要代码为:
<body>
<jsp:forward page="client/index.jsp"><jsp:forward>
</body>
2.2创建head.jsp文件
在web工程的WebContent目录下创建一个名称为client的文件
在其中创建一个head.jsp文件,用来盛放网页的头部,相关代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div id="divhead">
<table cellspacing="0" class="headtable">
<tr>
<td>
<a href="index.jsp">
<img src="${pageContext.request.contextPath}/client/images/logo.png" width="200" height="60" border="0" />
</a>
</td>
<td style="text-align:right">
<img src="${pageContext.request.contextPath}/client/images/cart.gif" width