"本文主要介绍了如何在Struts2框架中实现自定义类型转换器,以及Struts2相较于Struts1的优点。"
在Struts2框架中,类型转换器扮演着关键角色,允许开发者将特定格式的请求参数转换为Java对象。默认情况下,Struts2能够处理一些基本类型的转换,但当遇到如`java.util.Date`这样需要特殊格式的参数时,我们就需要自定义类型转换器来处理。例如,如果我们的日期参数是按照“20091221”这样的格式传递,而系统期望的是“2009-07-20”格式,那么就需要创建一个转换器来进行转换。
创建自定义类型转换器通常涉及以下步骤:
1. 创建一个类,实现`org.apache.struts2.converters.Converter`接口或者继承`org.apache.struts2.util.StrutsTypeConverter`类。
2. 在这个类中重写`convertStringTo()`和`convertObjectTo()`方法,分别处理字符串到对象的转换和对象到字符串的转换。
3. 使用`@Result`注解或在struts.xml配置文件中注册这个转换器,将其与特定的Action属性关联。
在上述的描述中,`HelloWorldAction`类中的`createtime`属性就是需要自定义转换的例子。我们需要创建一个转换器,使得Struts2能够将“20091221”格式的字符串正确转换为`Date`对象。
Struts2是基于WebWork发展起来的MVC框架,它相比Struts1具有诸多优势:
1. **非侵入式设计**:Struts2的控制器不直接依赖Servlet API和Struts API,使得代码更易于测试和维护。
2. **拦截器**:Struts2引入了拦截器机制,用于执行AOP(面向切面编程),例如实现权限控制、日志记录等功能。
3. **类型转换器**:内置支持类型转换,开发者可以通过自定义转换器处理特定格式的数据,无需像Struts1那样深入底层实现。
4. **多视图支持**:支持JSP、FreeMarker、Velocity等多种视图技术,提供更高的灵活性。
5. **输入验证**:Struts2的验证机制允许针对特定方法进行验证,解决了Struts1中的验证问题。
6. **国际化**:提供全局、包和Action级别的资源文件管理,便于实现国际化。
要搭建Struts2开发环境,你需要获取所需的jar文件,编写Struts2配置文件,以及在`web.xml`中配置Struts2的前端控制器DispatcherServlet。通过这些步骤,你可以创建一个基本的Struts2应用程序并开始开发。