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

版权声明:本文为博主Lynn&Lingfei原创文章,未经博主允许不得转载。 https://blog.csdn.net/meng564764406/article/details/53492272

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

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

一般错误有异常、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的处理到此结束,如果有更好的建议,请告知与我,一起探讨,并更新此文章。





展开阅读全文

没有更多推荐了,返回首页