目前在做一个网络应用程序,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是一个非常流行的Java Web框架,用于构建和维护MVC(模型-视图-控制器)架构的应用程序。然而,这个框架的历史上存在一系列的安全漏洞,其中特别值得关注的是与反序列化相关的漏洞,如s2-005、s2-016、s2-016...
4. **ActionMapper**:Struts2会使用`ActionMapper`来解析请求URL,并确定相应的Action类和方法。URL中的部分可以映射到Action的名称和方法名称。 5. **ActionProxy创建**:根据ActionMapper的结果,框架会创建一个...
Struts2框架并非完全独立的新框架,而是基于WebWork框架进行发展的。WebWork的稳定性和性能为Struts2提供了坚实的基础,使其成为一个融合了Struts1和WebWork优势的强大力量。在设计上,Struts2更注重整个开发周期,...
本资源包含了Struts2完全学习手册的第15至18章的源码,这四章主要涵盖以下几个核心知识点: 1. **Action与Result** (第15章) - **Action**: Struts2的核心组件,它代表了用户请求处理的业务逻辑。Action类是自定义...
首先,Struts2并非完全从零开始的新框架,而是基于WebWork发展起来的,继承了WebWork的特性并吸收了Struts1的优点。Struts2在稳定性和性能上有所提升,提供了更丰富的功能和更高的灵活性。 1. **Action类的区别**:...
10. **依赖注入(DI)**:虽然Struts2自身不完全依赖于Spring等DI框架,但可以与其他框架集成,实现组件的依赖注入。 在实际开发中,`struts2.jar`通常与其他库(如`lib`目录下的其他JAR文件)一起使用,如ognl.jar...
`struts2_Exception`章节讲述了Struts2的异常处理机制,如何通过配置全局异常处理或者在Action中捕获和处理异常,提供友好的用户反馈。 `struts2_BYManual`可能涉及的是手动配置Struts2的方面,比如XML配置文件的...
Struts2允许你在Action中抛出异常,框架会捕获这些异常并返回相应的错误页面。 8. **安全性考虑**: - 文件上传功能需要注意安全问题,比如防止恶意文件上传、XSS攻击、SQL注入等。开发者需要对上传文件进行检查,...
如果在`execute()`方法中抛出异常,Struts 2会自动捕获并根据配置显示错误信息。对于验证,`ActionSupport`实现了`Validateable`接口,允许我们在Action类中定义字段级的验证规则,当`execute()`方法被调用前,...
对于复杂的转换逻辑,可以考虑使用服务层或模型层的方法来处理,而不是完全依赖于类型转换器。 总之,Struts2的类型转换机制是其灵活性和易用性的关键组成部分。理解并熟练掌握这一机制,能够帮助开发者更好地构建...
3. **验证Token:** 在处理表单提交的Action方法中,Struts2的Token拦截器会自动进行Token验证。如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java ...
在实际项目中,根据需求还可以选择其他集成方案,例如使用Spring MVC完全替代Struts2,或者利用Spring Boot简化配置过程。无论哪种方式,都需要对Spring和Struts的核心原理有深入理解,才能更好地利用它们的能力。
8. **错误处理和异常处理**:讨论如何在Struts中捕获和处理程序运行时可能出现的错误和异常,以提高系统的健壮性。 9. **安全性和性能优化**:包括防止SQL注入、XSS攻击,以及通过缓存、减少HTTP请求等方式提升系统...
- Struts的DispatcherServlet捕获请求,根据struts-config.xml解析请求路径,找到对应的Action。 - ActionForm收集表单数据,Action执行业务逻辑,可能更新模型数据。 - Action返回一个ActionForward对象,指示...
2. 请求到达Web服务器,ActionServlet捕获请求。 3. ActionServlet 根据`struts-config.xml`配置,找到对应的RequestProcessor和Action。 4. RequestProcessor 预处理请求,然后将请求交给ActionServlet。 5. Action...
8. **错误处理**:当处理JSON请求时,应考虑错误处理机制,比如返回错误码或错误信息,以便前端能正确地捕获和处理异常情况。 9. **性能优化**:对于大量数据的传输,可以考虑使用GZIP压缩来减小网络传输的数据量,...