Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 328|回复: 0

[jsp学习]JavaWeb前台的异常处理

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-2 06:44:33 | 显示全部楼层 |阅读模式
    在做Java Web程序时候,如果出错了,常常会在页面上打印出错误的堆栈内存信息,在开发阶段对调试程序很有帮助,但是在运营环境下,这样的处理很不友好,非开发人员看了都会傻眼。


      


    这里给出一个简单的处理方式,使用错误页面来处理。


      


    一、创建两个常见的HTML错误信息页面:


      


    404.html


      
      
          
       <
       body
       >
       
             所访问的资源不存在:对不起,所请求的资源不存在!
       <
       br
       >
       
         
       
       </
       
       body
       
       >
       
      


      


    500.html


      
      
          
       <
       body
       >
       
             服务器内部错误:对不起,服务器忙!
       <
       br
       >
       
         
       
       </
       
       body
       
       >
       
      


      


    二、配置web.xml



      <?
      xml
      version
      ="1.0"
      encoding
      ="UTF-8"
      ?>
      

      <
      web-app
      version
      ="2.4"   
      
       
      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   
      
       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      >
      
         
      <
      Servlet
      >
      
             
      <
      description
      >This is the description of my J2EE component
      </
      description
      >
      
             
      <
      display-name
      >This is the display name of my J2EE component
      </
      display-name
      >
      
             
      <
      servlet-name
      >ErrServlet
      </
      servlet-name
      >
      
             
      <
      servlet-class
      >lavasoft.errtest.ErrServlet
      </
      servlet-class
      >
      
         
      </
      servlet
      >
      

      
         
      <
      servlet-mapping
      >
      
             
      <
      servlet-name
      >ErrServlet
      </
      servlet-name
      >
      
             
      <
      url-pattern
      >/servlet/ErrServlet
      </
      url-pattern
      >
      
         
      </
      servlet-mapping
      >
      
         
      <
      welcome-file-list
      >
      
             
      <
      welcome-file
      >index.jsp
      </
      welcome-file
      >
      
         
      </
      welcome-file-list
      >
      
         
      <
      error-page
      >
      
          
      <
      error-code
      >404
      </
      error-code
      >
      
          
      <
      location
      >/404.html
      </
      location
      >
      
         
      </
      error-page
      >
      
         
      <
      error-page
      >
      
          
      <
      error-code
      >500
      </
      error-code
      >
      
          
      <
      location
      >/500.html
      </
      location
      >
      
         
      </
      error-page
      >
      

      </
      web-app
      >
      


      


    三、创建一个测试的Servlet,用来抛500错误的用的,呵呵。


      


      
      
       package lavasoft.errtest;
       

       

       import java.io.IOException;
       

       import java.io.PrintWriter;
       

       

       import javax.servlet.ServletException;
       

       import javax.servlet.http.HttpServlet;
       

       import javax.servlet.http.HttpServletRequest;
       

       import javax.servlet.http.HttpServletResponse;
       

       

       public
       class ErrServlet
       extends HttpServlet {
       

       
       
       public
       void doGet(HttpServletRequest request, HttpServletResponse response)
       
          
       throws ServletException, IOException {
       

       
         response.setContentType(
       "text/html");
       
         
       throw
       new RuntimeException(
       "------");   
       
       }
       
    }
       
      


      


    四、测试


      


    1、当访问不存在的资源时候,服务器会返回404错误状态,这样会自动转向404对应的错误页面404.html,将其发送给客户端。


      


    2、当服务器处理错误时候,会返回500错误状态码,这样自动转向500对应的错误页面500.html,将其发送给客户端。


      


    这样,不费多大劲,就把异常的不友好问题解决了!


    当然,这仅仅是最简单的最懒惰的一种处理方式,还有一种方式值得推荐:那就是在有好提示的页面不直接显示错误堆栈信息,只有当请求查看错误详细信息时候才点击才显示出来,这个效果是通过js实现的。


    附:关于在tomcat下配置 error-page 500错误不能在IE下转发页面的问题
    在tomcat下配置  
      <error-page>
    <error-code>500</error-code>
    <location>/e500.html</location>
    </error-page>
    来转发 500错误页面, 在Firefox下面可以正常显示错误页面, 但是在IE下面不显示,这是IE自身的设定导致的,经过百度,找到几个解决办法:
    1, IE设定 工具-->Internet选项-->高级--->显示http友好错误信息(取消选择) , 这样就可以了

    2, 设置指定错误页页状态为正常,来告诉IE这不是一个服务器错误, 从而不显示IE的自定义错误页
    <%
    response.setStatus(200); // 200 = HttpServletResponse.SC_OK
    %>
      本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/280019

      
      
       
       

         
       

         
       
      
    复制代码

    源码下载:http://file.javaxxz.com/2014/10/2/064433469.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-3 17:30 , Processed in 0.382724 second(s), 52 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表