Struts2 Action属性注入详解与环境搭建
需积分: 9 31 浏览量
更新于2024-08-18
收藏 365KB PPT 举报
"为Action的属性注入值-struts2入门教程"
Struts2是一个基于MVC设计模式的Web应用框架,它是在WebWork2的基础上发展起来的。与它的前辈Struts1相比,Struts2有着显著的优势,比如无侵入式设计、强大的拦截器机制、内置类型转换器以及对多种视图技术的支持等。
在Struts2中,Action是业务逻辑的核心,它负责处理用户的请求。为了给Action的属性注入值,Struts2提供了依赖注入的功能。在上述例子中,`HelloWorldAction` 类有一个名为 `savePath` 的私有属性,拥有对应的getter和setter方法。在配置文件中,`<param>` 节点被用来为 `savePath` 属性注入值,例如设置 `savePath` 为 "/images"。
配置文件的部分如下:
```xml
<package name="itcast" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.itcast.action.HelloWorldAction" >
<param name="savePath">/images</param>
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
```
这里的 `<param>` 节点指定了 `savePath` 属性的值,当Action被实例化并执行时,Struts2会自动调用相应的setter方法,将 "/images" 赋值给 `savePath`。
Struts2的无侵入式设计意味着开发者可以在不依赖Servlet API的情况下编写Action,这提高了代码的可测试性和可维护性。此外,拦截器(Interceptor)是Struts2的一大亮点,它们允许开发者实现AOP(面向切面编程),如权限控制、日志记录等功能。通过定义拦截器链,可以灵活地控制Action执行前后的处理流程。
Struts2还提供了内置的类型转换器,简化了从请求参数到对象属性的转换过程。相比于Struts1,Struts2无需深入其底层实现来注册自定义类型转换器。此外,Struts2支持多种表现层技术,包括JSP、FreeMarker和Velocity,这样可以根据项目需求选择合适的视图技术。
对于输入验证,Struts2提供了细粒度的控制,可以在Action级别或方法级别进行验证,而不是像Struts1那样只在整个表单级别进行。Struts2的国际化支持也很强大,允许在全局、包或Action范围内管理资源文件,从而实现多语言的显示。
在搭建Struts2开发环境时,需要确保获取到所有必要的jar文件,并配置好Struts2的配置文件(通常为struts.xml)。还需要在`web.xml`中添加Struts2的过滤器配置,以便启动Struts2的MVC框架。
Struts2是一个功能丰富的MVC框架,它的设计使得开发者能够更高效、更灵活地构建Web应用程序。通过依赖注入、拦截器、类型转换器等特性,Struts2提供了比Struts1更优秀的开发体验。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2011-01-03 上传
2012-04-17 上传
2013-04-23 上传
2008-09-09 上传
2017-03-08 上传
2011-07-29 上传
郑云山
- 粉丝: 20
- 资源: 2万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析