`
ruyangit
  • 浏览: 18567 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2完全捕获404错误的方法

    博客分类:
  • java
 
阅读更多

 目前在做一个网络应用程序,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错误了。

分享到:
评论

相关推荐

    struts2反序列化漏洞,存在s2-005、s2-016、s2-016_3、s2-017

    Struts2是一个非常流行的Java Web框架,用于构建和维护MVC(模型-视图-控制器)架构的应用程序。然而,这个框架的历史上存在一系列的安全漏洞,其中特别值得关注的是与反序列化相关的漏洞,如s2-005、s2-016、s2-016...

    Struts2 运行流程分析

    4. **ActionMapper**:Struts2会使用`ActionMapper`来解析请求URL,并确定相应的Action类和方法。URL中的部分可以映射到Action的名称和方法名称。 5. **ActionProxy创建**:根据ActionMapper的结果,框架会创建一个...

    struts1与struts2的区别

    Struts2框架并非完全独立的新框架,而是基于WebWork框架进行发展的。WebWork的稳定性和性能为Struts2提供了坚实的基础,使其成为一个融合了Struts1和WebWork优势的强大力量。在设计上,Struts2更注重整个开发周期,...

    Struts2完全学习手册-第15-18章 源码

    本资源包含了Struts2完全学习手册的第15至18章的源码,这四章主要涵盖以下几个核心知识点: 1. **Action与Result** (第15章) - **Action**: Struts2的核心组件,它代表了用户请求处理的业务逻辑。Action类是自定义...

    Struts1和Struts2 的区别

    首先,Struts2并非完全从零开始的新框架,而是基于WebWork发展起来的,继承了WebWork的特性并吸收了Struts1的优点。Struts2在稳定性和性能上有所提升,提供了更丰富的功能和更高的灵活性。 1. **Action类的区别**:...

    struts2.jar

    10. **依赖注入(DI)**:虽然Struts2自身不完全依赖于Spring等DI框架,但可以与其他框架集成,实现组件的依赖注入。 在实际开发中,`struts2.jar`通常与其他库(如`lib`目录下的其他JAR文件)一起使用,如ognl.jar...

    百度文库 牛牧struts2.x深入浅出

    `struts2_Exception`章节讲述了Struts2的异常处理机制,如何通过配置全局异常处理或者在Action中捕获和处理异常,提供友好的用户反馈。 `struts2_BYManual`可能涉及的是手动配置Struts2的方面,比如XML配置文件的...

    Common-FileUpload与struts2文件上传

    Struts2允许你在Action中抛出异常,框架会捕获这些异常并返回相应的错误页面。 8. **安全性考虑**: - 文件上传功能需要注意安全问题,比如防止恶意文件上传、XSS攻击、SQL注入等。开发者需要对上传文件进行检查,...

    Struts 2.0的Action讲解

    如果在`execute()`方法中抛出异常,Struts 2会自动捕获并根据配置显示错误信息。对于验证,`ActionSupport`实现了`Validateable`接口,允许我们在Action类中定义字段级的验证规则,当`execute()`方法被调用前,...

    struts2学习笔记四(第4讲.Struts2的类型转换续)

    对于复杂的转换逻辑,可以考虑使用服务层或模型层的方法来处理,而不是完全依赖于类型转换器。 总之,Struts2的类型转换机制是其灵活性和易用性的关键组成部分。理解并熟练掌握这一机制,能够帮助开发者更好地构建...

    struts2_token控制刷新重复提交

    3. **验证Token:** 在处理表单提交的Action方法中,Struts2的Token拦截器会自动进行Token验证。如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java ...

    Spring+Struts的集成(第一种方案)

    在实际项目中,根据需求还可以选择其他集成方案,例如使用Spring MVC完全替代Struts2,或者利用Spring Boot简化配置过程。无论哪种方式,都需要对Spring和Struts的核心原理有深入理解,才能更好地利用它们的能力。

    struts应用开发完全手册第二十章source

    8. **错误处理和异常处理**:讨论如何在Struts中捕获和处理程序运行时可能出现的错误和异常,以提高系统的健壮性。 9. **安全性和性能优化**:包括防止SQL注入、XSS攻击,以及通过缓存、减少HTTP请求等方式提升系统...

    struts学习文档 ,完全自己总结 仅供 个人参考学习

    - Struts的DispatcherServlet捕获请求,根据struts-config.xml解析请求路径,找到对应的Action。 - ActionForm收集表单数据,Action执行业务逻辑,可能更新模型数据。 - Action返回一个ActionForward对象,指示...

    struts课件2

    2. 请求到达Web服务器,ActionServlet捕获请求。 3. ActionServlet 根据`struts-config.xml`配置,找到对应的RequestProcessor和Action。 4. RequestProcessor 预处理请求,然后将请求交给ActionServlet。 5. Action...

    json+struts

    8. **错误处理**:当处理JSON请求时,应考虑错误处理机制,比如返回错误码或错误信息,以便前端能正确地捕获和处理异常情况。 9. **性能优化**:对于大量数据的传输,可以考虑使用GZIP压缩来减小网络传输的数据量,...

Global site tag (gtag.js) - Google Analytics