Struts2 局部与全局类型转换及文件上传教程

需积分: 9 3 下载量 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中关于局部和全局类型转换以及文件上传的基本操作。理解并熟练掌握这些知识,将有助于在开发过程中更有效地处理数据转换和文件交互。