Struts2 局部与全局类型转换及文件上传教程
需积分: 9 169 浏览量
更新于2024-09-13
收藏 282KB DOCX 举报
"Struts2总结第二章 - 局部与全局类型转换,文件上传操作"
在Struts2框架中,处理数据类型转换是一项关键任务,尤其是当需要将用户输入的数据转换为特定类型,如日期(Date)时。本章主要讨论了Struts2中的局部类型转换和全局类型转换,以及文件上传的实现。
**局部类型转换**
1. **创建Date类型转换类**: 当你需要针对特定的Date字段进行自定义转换时,可以编写一个转换器类。这个类通常需要实现`Converter`接口或扩展`ConversionService`接口,并覆盖`convert`方法来实现具体的转换逻辑。
2. **配置properties文件**: 在与转换类处于同一包下,创建一个名为`conversion.properties`的文件。文件的命名规则是:Date类型字段所在的类名后面加上`-conversion.properties`。例如,如果字段所在类名为`User`,文件名为`User-conversion.properties`。
3. **配置转换器**: 在`conversion.properties`文件中,指定`name`为日期类型字段的名字,`value`为日期类型转换类的全限定类名。例如:
```
name=yourDateField
value=com.yourpackage.YourDateConverter
```
4. **服务器重新部署**: 完成上述步骤后,需要重新启动服务器以使配置生效。
**全局类型转换器**
1. **创建Date类型转换类**: 与局部转换相同,需要创建一个转换类,但此转换类将在整个应用中被使用。
2. **配置全局转换**: 在项目的`src`目录下创建`xwork-conversion.properties`文件。在这个文件中,全局配置日期类型转换,如下所示:
```
name=java.util.Date
value=com.yourpackage.GlobalDateConverter
```
这样,所有应用中需要转换的Date类型字段都会使用这个转换器。
**访问和添加请求/会话/应用程序属性**
在Struts2中,可以通过以下方式操作这些属性:
- **request属性**: 可以通过`ActionContext`获取并设置,它们仅在当前HTTP请求内有效。
- **session属性**: 使用`session.put()`和`session.get()`进行访问和设置,会话属性在会话生命周期内有效。
- **application属性**: 使用`application.put()`和`application.get()`,它们在整个应用程序运行期间都有效。
**文件上传**
Struts2支持文件上传,主要涉及以下几个步骤:
1. **导入相关库**: 引入Struts2文件上传所需的`struts2-core`和`commons-fileupload`库。
2. **设置表单属性**: 在HTML表单中,`enctype`属性需设为`multipart/form-data`,以支持文件上传。
3. **创建上传Action**: 创建一个继承自`ActionSupport`的类,例如`UploadAction`,并声明对应文件的属性(如`File upload`、`String uploadContentType`和`String uploadFileName`)以及相应的getter和setter方法。在`execute`方法中处理文件上传逻辑。
4. **文件上传的另一种方式**: 添加额外的属性,比如`savepath`(保存路径)和`allowType`(允许的文件类型)。在`savepath`的getter方法中返回实际的保存路径。然后在Struts2配置中指定支持的文件类型和保存路径。
5. **创建上传文件夹**: 确保在Web应用的根目录下创建了用于保存上传文件的文件夹(例如,`upload`)。
以上就是Struts2中关于局部和全局类型转换以及文件上传的基本操作。理解并熟练掌握这些知识,将有助于在开发过程中更有效地处理数据转换和文件交互。
2008-03-15 上传
2008-04-10 上传
2019-03-16 上传
2010-10-21 上传
202 浏览量
2012-03-28 上传
2013-12-28 上传
点击了解资源详情
点击了解资源详情
shj018
- 粉丝: 0
- 资源: 12
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍