常见jsp出现的页面错误(404,500等)与捕捉办法

今天被一哥们问到了这个问题 顿时觉得很囧 以前只知道404 ,500等几个错误

刚才到网上找了下 常用的有这些

200 ->请求已完成 记得在ajax中的status状态值也是用200来判断发送的请求是否完成

400 ->400 错误请求,原因可能是请求中存在异常字符或者是请求语法有错误等等引起

404 ->大名鼎鼎,找不到指定资源或者文件等, 想servlet的mapping配置错误 或者像struts的action配置错误都有可能引起该错误

414 ->请求URI太长,顾名思义.而以get方法的url长度上限是2048个字符(IE浏览器)

500 ->名气也不小,服务器不能完成请求,可能是jsp页面的java代码或者是servlet/action中的代码抛出了异常导致

505 ->HTTP版本不受支持 (不解)

捕捉这些的方法也很简单,大概有两种

1.

可以在web.xml中加入

<error-page>   
    <error-code>404</error-code>   /*错误代码 */
        <location>/404.jsp</location>    /*用来捕捉的页面 */
    </error-page>  

    <error-code>500</error-code>   /*错误代码 */
        <location>/500.jsp</location>    /*用来捕捉的页面 */
    </error-page>  
</error-page>  

这样的话貌似在火狐中可行 但是在IE中却不成功

解决办法:IE【工具】->【Internet选项】->【高级】中勾掉【显示友好http错误提示】

但是没有api可以自动修改该选项,所以不推荐

2.

<error-page>   
    <error-code>404</error-code>   /*错误代码 */
        <location>/error.jsp</location>    /*用来捕捉的页面 */
    </error-page>  

    <error-code>500</error-code>   /*错误代码 */
        <location>/error.jsp</location>    /*用来捕捉的页面 */
    </error-page>  
</error-page>  

把所有的异常统一到一个页面进行捕捉,在error.jsp中对异常进行解析,通过结果进而分配到不同的错误页面

在error.jsp中加入

<%   
      int status_code = -1;  
      String exception_info = null;  
      Exception theException = null;  
      status_code = ((Integer) request.getAttribute("javax.servlet.error.status_code"));  
      exception_info = (String) request.getAttribute("javax.servlet.error.message");  
      theException = (Exception) request.getAttribute("javax.servlet.error.exception_type");  
      if(status_code==404)      
            response.sendRedirect("error404.jsp");   //跳转404错误的jsp
      if(status_code==500)              
            response.sendRedirect("error500.jsp");    //跳转500错误的jsp
%> 

 另外如果是防止在jsp的java代码抛出异常的话也可以 try...catch{response.sendRedrect();}

或者jstl的<c:catch> <c:redirect url=""></c:redirect></c:catch>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值