`
jiangduxi
  • 浏览: 445182 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSP创建错误处理页面

阅读更多
   程序运行难免会发生异常或者错误。当处理JSP页面时,遇到的异常分为两个基本类型:
    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,显示日期、时间格式是不一样的。当然,不同的语言有自己不同的字符集。
分享到:
评论
2 楼 yuchensuifeng 2012-05-18  
您好,静态页面是可以的,但是,我指定error-page为jsp或者是struts的action就不行了,期待你的回答.
1 楼 何枫abc 2010-12-31  
你好!我是在web.xml里面进行了说明!为什么不行呢!!!期待你的回答

相关推荐

Global site tag (gtag.js) - Google Analytics