09Java Server Pages 错误处理
Java Server Pages 错误处理
通常JSP在执行的时候,在两个阶段会发生错误。第一个是JSP网页转译成Servlet类的时候,另一个就是Servlet类处理每一个请求的时候。在第一个阶段,产生的错误我们转译时错误(Translation Time Processing Errors);在第二阶段时,产生的错误我们称之为请求时错误(Client Request Processing Errors)。
转译时错误
转译时错误产生的主要原因是我们在撰写JSP时的静态语法有错误,导致JSP容器无法将JSP网页转译成Servlet类文件(.java),进而编译成字节码文件(.class)时出错。例如:500 Internal Server Error,500实质HTTP的错误状态码,因此是Server Error对于这种错误,我们通常根据页面上显示的错误内容以及标示行的信息来查看出错的位置,并解决。
请求时错误
请求时错误的发生,往往不是语法错误,而可能是逻辑上的错误,简单地说,你写的一个计算除法的程序当用户输入的分母为零时,程序会发生错误并抛出异常(Exception),交由异常处理(Exception Handling)机制做适当的处理。
对于这种错误的处理,我们通常会交给errorPage去处理。。
注意:
- 对于捕获错误的页面,必须使用page指令的errorPage属性。
- 对于处理错误的页面必须指定isErrorPage属性为“true”。
首先,我们创建cal.jsp,其作用是接收用户输入的两个参数,并转换成数字类型进行加法运算。有一个数字不输入,都会当做0来计算。最后将结果显示在页面上。
|
<!-- 这里最需要注意的是设定了errorPage属性 --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="err.jsp"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>加法计算</title> </head> <body> <form action="cal.jsp" method="post"> <!-- 我们设定数字1和数字2的默认值是0 --> 数字1:<input type="text" name="num1" id="num1" value="0"/><br> 数字2:<input type="text" name="num2" id="num2" value="0"/><br> <input type="submit" value="计算"/> </form> <% // 设定用什么编码来获取参数 request.setCharacterEncoding("UTF-8"); // 获取Request传递过来的参数,num1和num2 String numStr1 = request.getParameter("num1"); String numStr2 = request.getParameter("num2"); int num1 = 0; int num2 = 0; // 当传递参数不为空时,转换成int if (null != numStr1 && 0 < numStr1.length()) { num1 = Integer.parseInt(request.getParameter("num1")); } if (null != numStr2 && 0 < numStr2.length()) { num2 = Integer.parseInt(request.getParameter("num2")); } // 计算加法 int total = num1 + num2; %> 数字1 + 数字2 = <%=total%> </body> </html> |
在这段代码中,我们设置了两个输入框的默认值,画面每次刷新,输入框中的值都会再次变成0,在代码片段中,我们首先获得参数字符串,如果有哪个值是null或者是空,则最后计算加法的时候此值当0来计算。在这个页面中最最需要注意的地方时我们在最开始的page指令中指定了errorPage属性,如例程中灰色阴影的部分。
接着,我们来创建err.jsp,这个页面是我们用来显示出错信息的页面,
|
<!-- 这里最需要注意的是设置isErrorPage属性为true --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%> <%@ page import="java.io.PrintWriter" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Error页面</title> </head> <body> 计算页面cal.jsp出现错误:<i><%=exception%></i> <br> 问题如下: <br> <%-- 输出详细的错误信息 --%> <% exception.printStackTrace(new PrintWriter(out)); %> </body> </html> |
09Java Server Pages 错误处理的更多相关文章
- 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。
为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. - 在水一方 - 博客频道 - CSDN.NET 为 Python Server Pages 和 Oracl ...
- 1.1(学习笔记)JSP(Java Server Pages)基础(脚本元素、指令元素)
一.JSP简介 JSP全称为Java Server Pages,是一种动态网页开发技术,可以在HTML界面中嵌入java代码, 实现动态的提供数据.访问JSP时服务器会将JSP翻译成Servlet,访 ...
- 10Java Server Pages 隐式对象
Java Server Pages 隐式对象 JSP隐式对象是Web容器加载的一组类的实例,它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象.JSP提供的隐式对象 ...
- 08Java Server Pages 语法
Java Server Pages 语法 基础语法 注释 <!-- -->可以在客户端通过源代码看到:<%-- --%>在客户端通过查看源代码看不到. <!--浏 ...
- SQL Server出现错误: 4014
SQL Server出现错误: 4014 线下的测试机器老是报错,从errorlog里看到大量的4014错误 A fatal error occurred , output error: ). 错误: ...
- SQL SERVER 9003错误解决方法 只适用于SQL2000
SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...
- SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...
- Cannot set a credential for principal 'sa'. (Microsoft SQL Server,错误: 15535)
在SQL SERVER 2008上上禁用sa登录时,遇到下面错误:"Cannot set a credential for principal 'sa'. (Microsoft SQL Se ...
- <<< php程序在运行后报“internal server error”错误
上传的php程序在运行后报“internal server error”错误,检查以下两方面: 1.请您检查php程序的属性是否设置为755,如果php程序的属性不是755,那么运行的时候会报“int ...
随机推荐
- scikit-learn:3. Model selection and evaluation
參考:http://scikit-learn.org/stable/model_selection.html 有待翻译,敬请期待: 3.1. Cross-validation: evaluating ...
- javascript下的json 序列化及反序列化
1.序列化 将json对象转为字符串: JSON.stringify(jsonObj) 2.反序列化 var jsonObj = eval("(" + jsonstring + & ...
- POJ3254 状压dp
Corn ...
- Python中关键字global与nonlocal的区别
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634终于下定决心学习Python了.既然 ...
- 10 探索其他Excel对象
10.1 产生一个好的第一印象 10.1.1 为我们的世界着色 rgb(red:=[0,225],green:=[0,225],blue:=[0,225]) 此函数生成一个表示颜色的整数.VBA预定义 ...
- G. 铁路修复计划 最小生成树
G. 铁路修复计划 二分答案,改变边的权值,找最小生成树即可. 类似的思想还可以用在单度限制最小生成树和最优比例生成树上. #include<iostream> #include<c ...
- 开发第一个Template
TEMPLATE的静态变量,当时我们一句话就带过了.TEMPLATE静态变量下面有好几个键值对,把"BACKEND"后面的值改成我们想要用的模板引擎就可以了.我们项目使用Djang ...
- E20180119
Foundation n. 基础; 地基; 粉底; 基金(会); hybrid n. 杂种; 杂交生成的生物体; 混合物; 混合词; adj. 混合的; 杂种的;
- spring cloud config搭建说明例子(一)-简单示例
服务端 ConfigServer pom.xml添加config jar <dependency> <groupId>org.springframework.cloud< ...
- 例题 5-1 STL
Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on the ...