404等错误页面跳转问题--基于struts2和原生

在公司接了错误页面的跳转问题,对错误页面统一控制,今天做了一天的整理,将我所能知道的东西联合起来。希望能在这一篇文章中就能找到自己想要的东西,不必再去百度了。

先整理一下思路,在这些页面错误或者异常会给客户的体验很不好,必须对出现的错误页面进行调整。

一般错误有异常、404、403、500这几个为主要的错误页面,异常和404更是最常见的错误。

对于异常来说,这个太多了,如果不同的异常就要一个页面那多不胜数,在这里不对异常进行详细解答。


分析一下错误:

404 未能找到相应地址

500:系统内部错误

403现在很少见了,一般权限都会控制很好。

就以404的处理为例


整理一下思路:

需要我们处理错误的时候有哪些

第一:页面找不到

第二:action请求失败

第三:action请求方法失败


若是第一,则错误码首先被web.xml拦截,不会被struts处理

若是第二,第三会报出struts异常


因此有了以下处理方式:

1.第一种方式

在web.xml中配置404状态码,进行最简单的配置。

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

这是异常和404的配置。

下面的errorpage方式是根据异常判断的。


2.需要更多的是在错误页面上进行展示是由于哪些问题引起的错误,至少在开发的过程中我们可以进行调试使用。

既然需要展示错误的信息, 那必不可免的要获取action中信息。

首先要清楚的明白404这个错误一旦发生会先后经历过怎样的演变。

当不能找到页面时发生404错误----->这时候是被web.xml拦截----->然后返回页面(此时是没有进入acion)

现在对action请求错误进行处理:

在web.xml对404拦截,并进入jsp判断,跳转到错误action处理方法,并进行不同的处理

web.xml

    <error-page>
    	<error-code>404</error-code>
    	<location>/errorForward.jsp?code=404</location> 
    </error-page>
    <error-page>
error.jsp

<script type="text/javascript">  
    window.onload = function() {  
        var code = '<%=request.getParameter("code")%>';  
        switch(code) {  
            case '404' :   
                window.top.location.replace("<%=request.getContextPath()%>/forward!notFound");  
                break;  
            // other case can be listed here  
            default:  
                window.top.location.replace("<%=request.getContextPath()%>/forward!notFound");  
                break;  
        }  
    };  
</script>
跳转到Struts2的action处理拦截,在action里面进一步处理。

但是我们目前还有action未配置或者方法未配置,同样会出现异常页面,也是很不好的,此时我们需要修改action的配置文件

配置默认action,当找不到相应的action会自动进入此action中

        <default-action-ref name="unknown" />
	<action name="unknown" class="com.controller.UserController" method="unknown">  
            <result name="success">/404.jsp</result>  
        </action>

这样我们就对大部分的错误进行了处理,最大的处理了非友好界面。
也可以使用简写,也就是

	<default-action-ref name="unknown" />
	<action name="unknown">  
            <result>/404.jsp</result>  
        </action>

对于404的处理到此结束,如果有更好的建议,请告知与我,一起探讨,并更新此文章。





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
404页面2秒内自动跳转到首页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>很抱歉,网站搬新家啦!</title> <style type="text/css"> body {margin: 0px; padding:0px; font-family:"微软雅黑", Arial, "Trebuchet MS", Verdana, Georgia,Baskerville,Palatino,Times; font-size:16px;} div{margin-left:auto; margin-right:auto;} a {text-decoration: none; color: #1064A0;} a:hover {color: #0078D2;} img { border:none; } h1,h2,h3,h4 { /* display:block;*/ margin:0; font-weight:normal; font-family: "微软雅黑", Arial, "Trebuchet MS", Helvetica, Verdana ; } h1{font-size:44px; color:#0188DE; padding:20px 0px 10px 0px;} h2{color:#0188DE; font-size:16px; padding:10px 0px 40px 0px;} #page{width:910px; padding:20px 20px 40px 20px; margin-top:80px;} .button{width:180px; height:28px; margin-left:0px; margin-top:10px; background:#009CFF; border-bottom:4px solid #0188DE; text-align:center;} .button a{width:180px; height:28px; display:block; font-size:14px; color:#fff; } .button a:hover{ background:#5BBFFF;} </style> </head> <body> <div id="page" style="border-style:dashed;border-color:#e4e4e4;line-height:30px;background:url(sorry.png) no-repeat right;"> <h1>腹有诗书气自华~</h1> <h2>言书库,完本小说在线阅读网址 </h2> <meta http-equiv="refresh" content="1.5;url=http://www.yanshuku.com"> <font color="#666666">2秒内,若网页未能自动跳转,请点击下面按钮进行跳转!</font><br /><br /> <div class="button"> <a href="http://www.yanshuku.com" title="进入首页">立即进入首页</a> </div> </div> </body> </html>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值