Struts2是从Webwork衍生出来的框架,与Struts1有很大的不同。
它的主要优点:
1.它没有和ServletAPI紧密耦合,属于一种无侵入式的设计,可以方便地进行设测试。
2.struts2拥有拦截器的机制,可以实现一种环绕通知的AOP。
3.struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。
4.Struts2提供支持多种表现层技术
5.Struts2的输入校验可以对指定方法进行校验
Struts2的处理流程简述(具体流程参见另一篇文章:Struts2源码简析)
请求到来之后,首先,经过StrutsPrepareAndExecuteFilter过滤,这是所有Struts2请求入口。然后,请求会经过各种拦截器(Interceptor)完成pre-process,有的是Struts2默认自带的拦截器,有的是自定义的。接下来执行Action中指定执行的方法(默认是execute),再执行拦截器的post-process,在次期间,无论是拦截器,还是Action,都有可能会影响到最终的Result。最后,再对Result解析,找到合适的视图并用输出信息对象与视图绑定,返回给用户。
使用Struts2的注意事项:
1.需要给Action注入属性:比如,处理文件上传的时候,文件保存的目录。可以把这个参数通过struts.xml中的<action>标签的子标签<param>来为Action注入属性。
2.Struts2对Action的管理和Struts1有很大不同。Struts1的Action是单例,创建出Action就放入缓存,以供重复使用;而Struts2的Action是原型,为每一个request建立一个Action。
3.虽然Struts2提供了文件上传的功能,可以通过设置常量struts.multipart. maxSize来设置上传文件的大小。但是,Web并不适合上传大文件,如果要上传大文件,可以考虑开发Socket网络传输软件来实现。
4.在为Struts2的单独Action设置拦截器的时候,在<action>标签下设置<interceptor-ref>标签引用拦截器,但是如果直接这么写,Struts2默认提供的拦截器就会失效。解决方法:定义一个拦截器栈。
5.利用Struts2进行校验的时候,无论是校验错误还是类型转换错误,都可能会转入“input”视图。
6.如果为某个action提供了全方法校验和指定方法校验,先读全部校验文件,再读指定方法校验文件。struts2会将校验文件的校验规则汇总(使用后面文件的校验规则,即制定方法的校验规则),用于全部action方法。如果存在继承关系,例如:UserAction继承BaseAction,则先搜索父校验规则,再搜索子校验规则。
7.可以使用OGNL访问ValueStack中的值,不用加“#”,EL表达式也可以访问,因为Struts2对request对象做了增强处理,使它能够访问值栈。
8.Struts2中的<s:url>标签中的value属性默认不会按照OGNL表达式执行,需要加上“%{}”来处理。
9.在使用Model来进行参数传递的时候,Model不仅要有对应的setter,还有有对应的getter。如:Action中有一个User类的域,那么Action中要有setUser和getUser方法。
10.在进行声名式的异常处理时,可以使用OGNL在错误页面显示错误信息<s:property value="exception.message">
分享到:
相关推荐
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <filter-name>struts2 <url-pattern>/* ``` 这段代码定义了Struts 2的核心Filter,并将其映射到所有的请求上。 其次...
同时,需要注意的是,这两个漏洞的修补需要对 Struts2 的配置文件进行修改,因此需要对 Struts2 的配置文件有充分的了解和掌握。 Struts2 的 S2-016 和 S2-017 漏洞的修补需要对 Struts2 的源代码和配置文件进行...
11. **安全考虑**:Struts2虽然强大,但也需要注意安全性问题,例如XSS、CSRF等。开发者应确保对用户输入进行校验和过滤,使用安全的插件,及时更新Struts2版本以修补潜在的安全漏洞。 以上就是关于"留言板留言板...
在Struts2中实现文件上传功能时,开发者经常会遇到一些需要注意的问题。这篇博客文章(虽然链接不可用)可能探讨了在实现Struts2文件上传过程中的一些常见挑战和解决方案。 1. **文件大小限制**: - Struts2默认...
Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...
使用Struts2的全部JAR包时,要注意避免版本不兼容问题,确保所有库的版本一致。同时,正确配置web.xml文件,指定Struts2的过滤器。 9. **最佳实践**: - 为了代码整洁,推荐使用注解配置而非XML。 - 使用Maven或...
- 为了克服这些问题,Apache Software Foundation推出了Struts2,这是一个全新的框架,虽然名称相似,但实际上与原始的Struts框架有着本质的区别。 - **Struts2的特点**: - 更强大的MVC架构支持。 - 内置拦截器...
5. Struts2框架的优化:在使用Struts2框架进行Web开发的过程中,开发者需要注意一些性能优化的问题。例如,可以通过合理的配置Action缓存,减少Action的创建和销毁,提高系统的性能。同时,也可以通过合理的配置结果...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...
请注意,不同版本的Eclipse或Struts2可能需要略微调整上述步骤,以确保代码提示功能正常工作。尽管如此,大部分情况下,这种配置方法是有效的,可以帮助开发者更高效地编写和维护Struts2应用的配置文件。
Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,为开发者提供了构建可维护、可扩展的Web应用程序...在实际开发中,还要注意不断学习和理解Struts2的高级特性,以提升应用的质量和效率。
Struts2的每个新版本通常会包含对前一版本的兼容性改进,但有时也会引入一些不兼容性,因此升级过程中需要注意以下几点: 1. **依赖库的更新**:升级Struts2的同时,还需要检查和更新所有依赖的库,例如在提供的...
本文主要针对在导入struts2框架的jar包时可能出现的问题提供解决方案。 首先,你需要从Apache Struts的官方网站(http://struts.apache.org/download.cgi#struts2211)下载struts-2.2.11-all.zip包。这是一个包含了...
#### 一、徒手配置Struts2环境时需注意的关键事项 在没有使用任何集成开发环境的情况下配置Struts2,可能会遇到各种问题,尤其是在配置过程中对于细节的把握至关重要。以下是配置过程中需要注意的一些关键点: 1. ...
但值得注意的是,Struts2历史上曾出现过严重的安全漏洞,如CVE-2017-5638,因此及时更新至最新版本至关重要。 在下载的资源中,可能会包含以下内容: 1. **官方文档**:详尽的用户指南和开发者手册,帮助初学者...
2. Struts2不需要注意线程同步的问题,而Struts1则面临这个问题,因为Struts1对action创建的时候只创建一次,当多个用户同时访问这个action时,则必须出现这个同步的问题。而对Struts2来说,需要action时都要重新new...
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
同时,要注意检查并修复任何因版本升级而引入的新问题。 总结起来,"struts2 发布包"的1.3.9版本是Struts2框架的一个早期版本,虽然它包含了一些基本的MVC架构和拦截器机制,但随着技术的发展,新版本提供了更多的...
值得注意的是,在Struts2中,Action接口并不是强制性的,任何包含`execute`标记的方法所在的POJO都可以用作Action对象。 #### 二、线程安全模型 - **Struts1** 中的Action采用的是单例模式,这意味着对于所有的...
需要注意的是,Struts2的Action类通常包含较少的状态信息,更多地依赖于请求参数和拦截器来处理业务逻辑。 4. **转换配置文件**:将Struts1的配置文件转换为Struts2的格式。Struts2采用XML或注解的方式来配置Action...