JSP页面异常处理

1 JSP页面异常处理

异常是在运行时产生的exception对象。异常处理是处理运行时错误的过程。您的Web应用程序中随时可能会发生异常。因此,对于Web开发人员而言,如何处理异常是JSP开发者必须知道的事情。在JSP中,有两种处理异常的方法:

  1. 通过page指​​令的errorPage和isErrorPage属性
  2. 通过web.xml文件中的<error-page>标签

2 使用page指定进行异常处理

您必须定义并创建一个页面来处理异常,如error.jsp。然后,在可能发生异常的页面上定义page指令的errorPage属性来指定异常处理页面。

2.1 编写index.jsp

<%@ page language="java" contentType="text/html;charset=utf-8" %>
<html>
<html>
<head>
    <meta charset="utf-8">
    <title>一点教程网-JSP页面异常处理</title>
</head>
<body>

<form action="process.jsp">
    请输入第一个数值:<input type="text" name="n1" /><br/><br/>
    请输入第二个数值:<input type="text" name="n2" /><br/><br/>
    <input type="submit" value="两数相除"/>
</form>

</body>
</html>

2.2 编写process.jsp

<%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp"  language="java" %>
<html>
<head>
    <title>一点教程网-JSP页面异常处理</title>
</head>
<body>

<%

String num1=request.getParameter("n1");
String num2=request.getParameter("n2");

int a=Integer.parseInt(num1);
int b=Integer.parseInt(num2);
int c=a/b;
out.print("结果是: "+c);

%>

</body>
</html>

2.3 编写error.jsp

<%@ page isErrorPage="true" contentType="text/html;charset=UTF-8"  %>
<html>
<head>
    <title>一点教程网-JSP页面异常处理</title>
</head>
<body>
<h3>异常发生!</h3>

具体异常信息为: <%= exception %>
</body>
</html>

2.4 运行测试

3 使用web.xml配置进行异常处理

这种异常处理方法更加推荐,因为您不需要在每个JSP页面中指定errorPage属性。在web.xml文件中指定一个配置即可处理该异常。这时,我们需要使用location元素指定异常类型或错误代码。如果要处理所有异常,则必须在exception-type元素中指定java.lang.Exception。让我们看一个简单的例子:

3.1 配置web.xml

1)指定异常类型的方法

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.jsp</location>
    </error-page>

</web-app>

如果要处理所有异常,则如上所示。当前也可以指定特定的异常类型。

2)指定错误代码的方法

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <error-page>
        <error-code>500</error-code>
        <location>/error.jsp</location>
    </error-page>

</web-app>

3.2 编写index.jsp

<%@ page language="java" contentType="text/html;charset=utf-8" %>
<html>
<html>
<head>
    <meta charset="utf-8">
    <title>一点教程网-JSP页面异常处理</title>
</head>
<body>

<form action="process.jsp">
    请输入第一个数值:<input type="text" name="n1" /><br/><br/>
    请输入第二个数值:<input type="text" name="n2" /><br/><br/>
    <input type="submit" value="两数相除"/>
</form>

</body>
</html>

3.3 编写process.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>一点教程网-JSP页面异常处理</title>
</head>
<body>

<%

String num1=request.getParameter("n1");
String num2=request.getParameter("n2");

int a=Integer.parseInt(num1);
int b=Integer.parseInt(num2);
int c=a/b;
out.print("结果是: "+c);

%>

</body>
</html>

注意:您无需在JSP页面中指定page指令的errorPage属性。

3.4 运行测试

结果和上一个案例一样。

推荐好课