zoukankan      html  css  js  c++  java
  • struts2 404处理

    目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat。希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的404错误处理页面。

    首先查阅网上的资料,得知可以在web.xml中加入这么一段:

    <error-page>
       <error-code>404</error-code>
       <location>/error/404.jsp</location>
    </error-page>

    这样,所以未找到的404错误都会转到/error/404.jsp接受处理。

    但是经过试验,我发现以.action结尾的URL会先被struts2框架所捕获,而不会直接转入web.xml中配置的处理页面。这样,如果在struts.xml没有配置相应的action,则会在tomcat里输出错误:

    严重: Could not find action or result
    There is no Action mapped for namespace / and action name ******. - [unknown location]

    虽然最后也能转入web.xml中配置的处理页面,但是这样在命令台瞎输出一些东西,非常不便于程序的管理和调试,所以还得想办法让struts2框架处理未定义的action。

    查阅网上资料,发现可以在struts.xml中,添加一个默认的package,然后在这个默认的package中,添加一个默认的action,让这个action转向404错误处理页面:

    <package name="default" extends="struts-default">
       <default-action-ref name="notFound" />
       <action name="notFound">
        <result>/error/404.jsp</result>
       </action>
    </package>

    默认的package的特点就在于不定义namespace属性,这样所有未定义的namespace都会转向这里。name="default"是为了便于阅读,其实name是什么都可以,也可以为空:name=""。

    然后还要在其它已定义的package中也添加默认的action,转向404错误处理页面。这样就可以完全处理所有的404错误了。

    网友评论:

    <global-results>
    <result name="notFound">/404.html</result>
    </global-results>,也可以

  • 相关阅读:
    Android开发之《内存对齐》
    Android开发之《libyuv库的使用》
    Android开发之《ffmpeg解码mjpeg视频流》
    Android开发之《USB Camera》
    Cenos配置Android集成化环境, 最终Centos libc库版本过低放弃
    (警告)不要轻易删除libc.so.6,以及误删恢复
    Android开发之《硬件加速》
    EPANET中的typedef使用
    面试
    NSString copy && strong
  • 原文地址:https://www.cnblogs.com/Code-Engineering/p/5745409.html
Copyright © 2011-2022 走看看