Struts2.0学习笔记.doc
Struts2.0是一个流行的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在Struts2中,类型转换是自动进行的,旨在帮助开发者处理请求参数与Action类属性之间的类型匹配问题。文档中的内容主要涉及到Struts2.0的类型转换机制,特别是对于自定义类型转换器的使用。 Struts2.0内置了一些预定义的类型转换,例如基本数据类型(int, Boolean, double等)以及日期类型。对于日期类型,它会使用当前区域的短格式进行转换,即`DateFormat.getInstance(DateFormat.SHORT)`。此外,对于集合类型如List或Set,Struts2能够自动将请求参数的字符串数组转换为对应的集合。数组类型也能被处理,每个字符串元素会被转换为特定类型并组成一个数组。 在案例中,有一个名为`Point`的自定义类,包含两个`String`类型的属性`x`和`y`。在`XXXAction`类中,我们希望将用户在JSP页面上输入的`p`(格式为`X,Y`)转换为`Point`对象。为了实现这个功能,我们需要创建一个自定义类型转换器。 自定义类型转换器需要实现OGNL(Object-Graph Navigation Language)的`DefaultTypeConverter`接口。在这个接口中,核心方法是`convertValue(Map context, Object value, Class toType)`。在这个方法里: 1. `Map context`代表类型转换的上下文环境。 2. `Object value`是要转换的对象,根据转换方向,可能是需要转换的字符串(从页面到Action)或Action的属性(从Action到页面)。 3. `Class toType`是转换的目标类型。 在上述例子中,当`toType`为`Point.class`时,我们需要将字符串转换为`Point`对象,这通常涉及对字符串的解析。如果`toType`为`String.class`,则需要将`Point`对象转换回字符串,以便在页面上显示。 创建自定义类型转换器的代码如下: ```java import java.util.Map; import ognl.DefaultTypeConverter; public class PointConverter extends DefaultTypeConverter { public Object convertValue(Map context, Object value, Class toType) { if (toType == Point.class) { // 将字符串转换为Point对象 String[] p = (String[]) value; Point point = new Point(); String[] pp = p[0].split(","); point.setX(pp[0]); point.setY(pp[1]); return point; } else if (toType == String.class) { // 将Point对象转换为字符串 Point point = (Point) value; return "<" + point.getX() + "," + point.getY() + ">"; } // 其他类型的转换可以在这里添加 } } ``` 完成自定义类型转换器后,需要在配置文件(如struts.xml)中注册这个转换器,这样Struts2在进行类型转换时就会使用这个转换器来处理`Point`类型的字段。 ```xml <struts> <!-- ... --> <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> <package name="default" namespace="/" extends="struts-default"> <!-- ... --> <interceptors> <!-- ... --> <converter name="pointConverter" class="edu.tsinghua.user.action.PointConverter"/> </interceptors> <!-- ... --> </package> <!-- ... --> </struts> ``` 通过以上步骤,我们就成功地创建了一个自定义类型转换器,实现了`Point`类的自动转换,使得用户在JSP页面上的输入能正确地被解析并存储到Action的属性中,同时在显示结果时也能将`Point`对象转换为可读的字符串格式。这种自定义类型转换器的使用大大增强了Struts2的灵活性,使得处理复杂数据类型变得简单易行。
剩余24页未读,继续阅读
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助