"这篇资源主要介绍了如何在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应用程序非常有帮助。
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/082ccf8ae78d49c383834df273e6e958_weixin_42202716.jpg!1)
- 粉丝: 19
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)