Struts2自定义类型转换器实践
需积分: 3 14 浏览量
更新于2024-08-18
收藏 152KB PPT 举报
"这篇资源主要介绍了如何在Struts2框架中实现自定义类型转换器,以及Struts2开发所需的依赖库和启动配置。"
在Struts2框架中,当需要处理非基本数据类型如枚举时,系统默认的类型转换器可能无法满足需求,这时就需要我们自定义类型转换器。在提供的描述中,`HelloWorldAction` 类包含一个 `Gender` 枚举类型的属性。当请求参数需要注入到 `gender` 属性时,因为Struts2默认不支持枚举类型转换,所以我们必须定义一个转换器来处理这种类型。
自定义类型转换器在Struts2中是通过实现 `org.apache.struts2.converters.Converter` 接口或继承 `org.apache.struts2.util.StrutsTypeConverter` 类来完成的。转换器的主要任务是将请求参数的字符串值转换为目标类型。在这个例子中,我们需要创建一个转换器类来将请求中的 "MAN" 或 "WOMEN" 字符串转换为 `Gender` 枚举值。
```java
public class GenderConverter extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
if (values != null && values.length > 0 && values[0] != null) {
return Gender.valueOf(values[0].toUpperCase());
}
return null;
}
@Override
public String convertToString(Map context, Object o) {
if (o instanceof Gender) {
return ((Gender) o).name().toLowerCase();
}
return "";
}
}
```
然后,我们需要在Struts2的配置文件中注册这个转换器,通常是通过 `struts.xml` 或者 `struts.properties` 文件,如下所示:
```xml
<package name="default" namespace="/" extends="struts-default">
<global-results/>
<global-exception-mappings/>
<interceptors>
<!-- ... -->
</interceptors>
<actions>
<!-- ... -->
</actions>
<converters>
<converter name="gender" class="com.example.GenderConverter"/>
</converters>
</package>
```
这样,Struts2在处理 `HelloWorldAction` 的 `gender` 属性时,就会使用我们自定义的 `GenderConverter` 进行类型转换。
此外,资源中提到了开发Struts2应用程序所需的一些核心库。包括但不限于:
1. `struts2-core-2.x.x.jar`: Struts2框架的核心库,包含了框架的基本功能和组件。
2. `xwork-2.x.x.jar`: XWork库,作为Struts2的基础,提供了许多底层服务和机制。
3. `ognl-2.6.x.jar`: 对象图导航语言,Struts2用于表达式语言,用于数据绑定和方法调用。
4. `freemarker-2.3.x.jar`: FreeMarker模板引擎,用于生成动态HTML或其他文本格式的输出。
5. `commons-logging-1.1.x.jar`: 通用的日志接口,允许Struts2与其他日志框架(如Log4J)进行交互。
6. `Commons-fileupload`: 用于处理文件上传的库。
7. 如果需要与其他框架集成,例如Spring,还需要相应的插件jar,如 `struts2-spring-plugin-2.x.x.jar`。
Struts2的启动配置通常在 `web.xml` 文件中通过过滤器完成。以下是基本的Struts2过滤器配置:
```xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
这个配置会将所有请求都通过Struts2的 `FilterDispatcher` 过滤器处理,从而启动Struts2框架。在较新的Struts2版本中,推荐使用 `StrutsPrepareAndExecuteFilter` 替代 `FilterDispatcher`。
这个资源涵盖了Struts2自定义类型转换器的创建、Struts2核心依赖库的介绍以及基本的框架启动配置,对于理解和开发Struts2应用程序非常有帮助。
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
2024-11-27 上传
涟雪沧
- 粉丝: 21
- 资源: 2万+
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查