Jsp ·

JSP之errorPage与isErrorPage的作用与如何使用

在写jsp代码的时候,由于java语言的特性,难免出抛出各种异常,比如说比较常见的“空指针”,“数据越界”,“文件IO异常”等,这个时候如果不处理,错误就会直接显示在前台页面上了,用户体验相当差劲,而且还可以被不法之徒进行利用,以达到攻击服务器的目的,所以这个不可小视。

幸好,在jsp被设计之初,已经考虑了这个功能,下面用一个示例来展示给大家,看看如何使用。

1、用eclipse新建一个java web的项目,然后在webRoot下新建一个html页面,命名为:tojsp.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>tojsp.com errorPage and isErrorPage</title>
   </head>
   <body>
	<form method="post" action="divide.jsp">
	   <p>测试整数除法并抛出异常<p>
	      被除数<input type="text" name="tojsp1">
	      除数<input type="text" name="tojsp2">
	   </p>
	   <p>
	      <input type="submit" name="Submit" value="开始计算">
	   </p>
        </form>
   </body>
</html>

2、新建页面 divide.jsp

<%@ page language="java" errorPage="error.jsp" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Divide</title>
	</head>
	<body bgcolor="#FFFFFF">
		<center>
			<br>
			<h1>
				<%
					int dividend = 0;
					int divisor = 0;
					int result = 0;
					try {
						dividend = Integer.parseInt(request.getParameter("value1"));
					} catch (NumberFormatException nfex) {
						throw new NumberFormatException("被除数不是整数! ");
					}
					try {
						divisor = Integer.parseInt(request.getParameter("value2"));
					} catch (NumberFormatException nfex) {
						throw new NumberFormatException("除数不是整数! ");
					} 
					result = dividend / divisor;
					out.println(dividend + " / " + divisor + " = " + result);
				%>
			</h1>
			<br>
			<br>
			<br>
			<a href="javascript: history.back();">返回</a>
		</center>
	</body>
</html>

3、新建页面error.jsp

<%@ page language="java" isErrorPage="true" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Compute error</title>
	</head>
	<body bgcolor="#FFFFFF">
		<div align="center">
			<br>
			<br>
			<h1>
				错误信息
			</h1>
			<hr>
			<p>
			<h3><%=exception.toString()%></h3>
			<br>
			<br>
			<br>
			<a href="javascript: history.back();">返回</a>
		</div>
	</body>
</html>

5、然后运行tojsp.html页面。这时如果把除数或被除数输成小数,就会出错,而出错的信息就会自动的调用errror.jsp页面的信息

6、errorPage 的意思是设置当前页面要引入错误页面
也就是浮面当前页面如果出现错误就会跳转到errorPage所指定的页面

7、isErrorpage的意思是当前页面为错误页面
isErrorpage默认值为false,若要当前页面为错误页面就设置isErrorPage=true

参与评论