JSP创建错误处理页面
程序员文章站
2022-03-29 23:41:18
...
程序运行难免会发生异常或者错误。当处理JSP页面时,遇到的异常分为两个基本类型:
1. 编译时的错误
2. 运行时的错误。
如果在编译时出现错误,那么将会产生那边错误(错误代码500)。如果错误在JSP编译完成后发生,那么就是运行时错误。如果我们不对错误进行处理,根据服务器的不同,就会显示出不友好的出错页面。同时也暴露了一些信息。
在JSP程序中可以捕获产生的异常,并且在代码中进行异常处理,比如:
在上面的代码中,JSP已经捕获到了异常。但是如果异常在客户端请求时出现并且根本没有捕获到这个异常,那么用户还是会出现不友好的出错界面。这样噩梦需要建立一些异常页面。建立异常页面时,可以在编程中指定JSP出错的页面,也可以再web.xml文件中描述错误代码和出错页面。
在JSP中声明出错页面
由于JSP文件被编译成Servlet执行,出现异常的默认操作就是显示异常从堆栈。JSP页面提供了重写这个默认行为的功能。并且将异常处理转到另一个文件中:
<%@ page errorPage="error.jsp"%>
这样在这个JSP页面中,如果遇到任何为捕获到的Throwable对象,那么就会显示指定的出错页面。
建立错误代码和错误页面
以上是在编程中指定错误页面,有一些异常不是由JSP页面抛出,而是由应用服务器抛出的,比如访问的页面不存在,应用服务器将会抛出页面不存在的异常(错误代码404)
这样的页面同样也是不友好的,我们可以在web.xml文件中对异常进行声明。比如出现错误代码为404,就调用pageNotFound.html页面,出现错误代码为500的异常,就调用internalError.jsp页面。
可以在web.xml文件中进行声明如下:
可以看出,在声明错误页面时,可以指定错误的代码。
国际化问题
一个真正意义的全球资源,其Web浏览器的内容对每个接收到的用户来说都是易读的。现在大多数全球资源的网站都是英文的。当然,现在也在发生变化,有的网站为一些特定的国家定制非英文版本。比如简单的google.com和google.cn吧。
国际化的问题主要包含以下的内容:
1. 日期、时间
2. 数字
3. 货币
4. 其他一些特殊的字符
也就是说,不同的Locale,显示日期、时间格式是不一样的。当然,不同的语言有自己不同的字符集。
1. 编译时的错误
2. 运行时的错误。
如果在编译时出现错误,那么将会产生那边错误(错误代码500)。如果错误在JSP编译完成后发生,那么就是运行时错误。如果我们不对错误进行处理,根据服务器的不同,就会显示出不友好的出错页面。同时也暴露了一些信息。
在JSP程序中可以捕获产生的异常,并且在代码中进行异常处理,比如:
<% try{ int i=Integer.parseInt(request.getParameter("age")) } catch(NumberFormatException e) { response.sendRedirect("reenter.jsp"); } %>
在上面的代码中,JSP已经捕获到了异常。但是如果异常在客户端请求时出现并且根本没有捕获到这个异常,那么用户还是会出现不友好的出错界面。这样噩梦需要建立一些异常页面。建立异常页面时,可以在编程中指定JSP出错的页面,也可以再web.xml文件中描述错误代码和出错页面。
在JSP中声明出错页面
由于JSP文件被编译成Servlet执行,出现异常的默认操作就是显示异常从堆栈。JSP页面提供了重写这个默认行为的功能。并且将异常处理转到另一个文件中:
<%@ page errorPage="error.jsp"%>
这样在这个JSP页面中,如果遇到任何为捕获到的Throwable对象,那么就会显示指定的出错页面。
建立错误代码和错误页面
以上是在编程中指定错误页面,有一些异常不是由JSP页面抛出,而是由应用服务器抛出的,比如访问的页面不存在,应用服务器将会抛出页面不存在的异常(错误代码404)
这样的页面同样也是不友好的,我们可以在web.xml文件中对异常进行声明。比如出现错误代码为404,就调用pageNotFound.html页面,出现错误代码为500的异常,就调用internalError.jsp页面。
可以在web.xml文件中进行声明如下:
<?xml version="1.0" encoding="iso-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> <error-page> <error-code>404</error-code> <location>/pageNotFound.html</location> </error-page> <error-page> <error-code>505</error-code> <location>/internalError.html</location> </error-page> <error-page> <exception-type>java.lang.NumberFormatException</exception-type> <location>/NumberFormatException.html</location> </error-page>
可以看出,在声明错误页面时,可以指定错误的代码。
国际化问题
一个真正意义的全球资源,其Web浏览器的内容对每个接收到的用户来说都是易读的。现在大多数全球资源的网站都是英文的。当然,现在也在发生变化,有的网站为一些特定的国家定制非英文版本。比如简单的google.com和google.cn吧。
国际化的问题主要包含以下的内容:
1. 日期、时间
2. 数字
3. 货币
4. 其他一些特殊的字符
也就是说,不同的Locale,显示日期、时间格式是不一样的。当然,不同的语言有自己不同的字符集。
上一篇: 浮动流的半脱标性
下一篇: Docker镜像创建的三种方式