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 错误处理的更多相关文章

  1. 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。

    为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. - 在水一方 - 博客频道 - CSDN.NET 为 Python Server Pages 和 Oracl ...

  2. 1.1(学习笔记)JSP(Java Server Pages)基础(脚本元素、指令元素)

    一.JSP简介 JSP全称为Java Server Pages,是一种动态网页开发技术,可以在HTML界面中嵌入java代码, 实现动态的提供数据.访问JSP时服务器会将JSP翻译成Servlet,访 ...

  3. 10Java Server Pages 隐式对象

    Java Server Pages 隐式对象 JSP隐式对象是Web容器加载的一组类的实例,它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象.JSP提供的隐式对象 ...

  4. 08Java Server Pages 语法

    Java Server Pages 语法 基础语法 注释 <!--   -->可以在客户端通过源代码看到:<%--   --%>在客户端通过查看源代码看不到. <!--浏 ...

  5. SQL Server出现错误: 4014

    SQL Server出现错误: 4014 线下的测试机器老是报错,从errorlog里看到大量的4014错误 A fatal error occurred , output error: ). 错误: ...

  6. SQL SERVER 9003错误解决方法 只适用于SQL2000

    SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...

  7. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...

  8. 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 ...

  9. <<< php程序在运行后报“internal server error”错误

    上传的php程序在运行后报“internal server error”错误,检查以下两方面: 1.请您检查php程序的属性是否设置为755,如果php程序的属性不是755,那么运行的时候会报“int ...

随机推荐

  1. 【面试加分项】java自己定义注解之解析注解

    我之前的博客中说明过自己定义注解的声明今天我们来看看怎样对我们自己定义的注解进行使用. 1.我们在程序中使用我们的注解. 上一篇中我们自己定义了一个注解: @Target(ElementType.FI ...

  2. android学习一(了解android)

    声明:android学习文件中面的全部内容为都是整理来自第一行代码Android.在接下来的文章里我就不在进行反复的声明. 想看原版的能够买书看看.或者去作者的博客http://blog.csdn.n ...

  3. 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例

    服务器无法处理请求. ---> 未将对象引用设置到对象的实例. 简短说下我遇到的问题.webservice部署到服务器上后,访问方法报上面的错误,最终原因为改方法需要操作文件夹,加上了相应的权限 ...

  4. Junit 测试基础

    /** * 1.测试函数以     @Test  注解, 函数名可以根据测试内容自定义但返回值必须是void,不能有参数 * 2.assertEquals(arg0,arg1); 用来判断期待值是否和 ...

  5. luogu P4719 【模板】动态dp

    noip怎么考这种东西啊...看错题场上爆零凉了 首先我们先进行树链剖分,那么问题可以转换成重链的答案+其他子节点的答案 而每次修改相当于改一段重链的答案,改一次其他子节点的答案交替进行 这样只有一个 ...

  6. c#调用oracle存储过程返回数据集

    c#调用oracle存储过程返回数据集 2008-12-20 10:59:57|  分类: net|字号 订阅   CREATE OR REPLACE PACKAGE pkg_tableTypeIS  ...

  7. 【Codevs1080】质数环

    http://codevs.cn/problem/1031/ 不讲什么,预处理素数+搜索 // <C.cpp> - Sun Oct 9 12:58:23 2016 // This file ...

  8. mac ox终端显示 bogon的问题

    mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,一查bogon这个单词是虚拟.虚伪的意思.     ...

  9. luogu 4630 [APIO2018] Duathlon 铁人两项

    题目大意: 无向图上找三个点 a b c使存在一条从a到b经过c的路径 求取这三个点的方案数 思路: 建立圆方树 这个圆方树保证没有两个圆点相连或两个方点相连 对于每个节点x 设该节点为路径的中间节点 ...

  10. Could not find modernizr-2.6.2 in any of the sources GitLab: API is not accessible

    Could not find modernizr-2.6.2 in any of the sources GitLab: API is not accessible bundle exec rake ...