struts2学习之三、类型转换
1、本例中在界面上输入点,所以引入了类型转换
点的pojo类
package com.test.bean;
public class Point
{
private int x;
private int y;
public int getX()
{
return x;
}
public void setX(int x)
{
this.x = x;
}
public int getY()
{
return y;
}
public void setY(int y)
{
this.y = y;
}
@Override
public String toString()
{
return "x = " + x + " y = " + y;
}
}
2、input.jsp
...
<body>
<h3><font color="red">使用逗号将点的两个坐标分割开</font></h3>
<s:form action="pointConverter">
<s:textfield name="point" label="point"></s:textfield>
<s:textfield name="age" label="age"></s:textfield>
<s:textfield name="username" label="username"></s:textfield>
<s:textfield name="date" label="birthday"></s:textfield>
<s:submit label="submit"></s:submit>
</s:form>
</body>
...
3、ognl,使用struts时最好去参考一下,webwork网站上的ognl--》source repository--》通过wincvs客户端可以将源代码下载下来
4、转换类PointConverter.class(基于webwork的ognl)
package com.test.converter;
import java.util.Map;
import ognl.DefaultTypeConverter;
import com.test.bean.Point;
//此处继承了strut2中的ongl的jar包中DefaultTypeConverter类,该类有两个转换类,我们重写它即可!
public class PointConverter extends DefaultTypeConverter
{
//context上下文
@Override
public Object convertValue(Map context, Object value, Class toType)
{
//toType表示转换成什么,此处表示要从字符串转换到point
if(Point.class == toType)
{
Point point = new Point();
//解释:为什么此处是字符串数组,因为提交过来可能是一个组,比如一个选择列表,他们的名字都是相同的。
String[] str = (String[])value;
String[] paramValues = str[0].split(",");
int x = Integer.parseInt(paramValues[0]);
int y = Integer.parseInt(paramValues[1]);
point.setX(x);
point.setY(y);
return point;
}
if(String.class == toType)
{
Point point = (Point)value;
int x = point.getX();
int y = point.getY();
String result = "[x=" + x + " , y=" + y + "]";
return result;
}
return null;
}
}
5、pointAction类
package com.test.action;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.Point;
public class PointAction extends ActionSupport
{
private Point point;
private int age;
private String username;
private Date date;
public Point getPoint()
{
return point;
}
public void setPoint(Point point)
{
this.point = point;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public Date getDate()
{
return date;
}
public void setDate(Date date)
{
this.date = date;
}
@Override
public String execute() throws Exception
{
return SUCCESS;
}
}
6、out.jsp
<body>
point:<s:property value="point"/><br>
age:<s:property value="age"/><br>
username:<s:property value="username"/><br>
date:<s:property value="date"/><br>
</body>
7、struts.xml
<action name="login" class="com.test.action.LoginAction">
<result name="input">/login2.jsp</result>
<result name="success">result.jsp</result>
<result name="failer">/login2.jsp</result>
<action name="pointConverter" class="com.test.action.PointAction">
<result name="success">/output.jsp</result>
</action>
struts如何知道去找谁转换呢?
1)规定在src定义一个文件(系统会自动拷贝一份到class目录下一份)
文件名为PointAction-conversion.proreties
该文件名字要求,文件名格式为***-conversion.properties
文件位置和Action类放在一起,且名前半部分和Action类一致如:PointAction-conversion.proreties
内容为point=con.test.converter.pointConverter
解释:等号左侧是需要转换的类的对象,左侧是用哪个类来转换。
2)运行过程当运行到PointAction类时,发现有一个文件PointAction-conversion.proreties,那么它在调用action里面的属性时它就会
检查需不需要转化,当执行到setPoint的时候,发现了Point类需要转化,会先对Point类根据=con.test.converter.pointConverter来转化。然后再赋值。
当需要跳转到success对应页面输出时,发现有Point输出时,又一次类型转化!
分享到:
相关推荐
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...
在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理用户提交的数据时非常关键,它允许Struts2自动将请求参数转换为Java对象的属性。 在Struts2中,类型转换主要由`...
本实例主要探讨了在Struts2中进行类型转换的三种方法:局部类型转换、全局类型转换以及大量数据类型的转换。对于初学者来说,理解并掌握这些转换方式至关重要,因为它们能够帮助我们处理用户输入的数据,并将其转化...
这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...
Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...
struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter struts5 增加集合类型,使用范型 ...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。...这个案例提供了一个很好的学习点,帮助开发者更好地理解和利用Struts2框架的类型转换机制,提高代码的健壮性和可维护性。
9. **全局类型转换配置**:为了统一管理不同类型转换的规则,Struts2允许在`struts.xml`配置文件或`xwork-conversion.properties`文件中定义全局的类型转换策略,从而避免在每个Action中重复配置相同的转换规则。...
通过这两课时的学习,你应该能够熟练掌握Struts2类型转换器的使用,并能根据业务需求自定义自己的转换器。这些知识对于进行Java web开发,特别是使用Struts2框架的工作来说,是非常关键的。理解并运用好类型转换器,...
WebWork在被Struts2吸收之前,已经具备了许多先进的特性,如动态类型转换、拦截器和结果类型等。这些特性后来都被融入到了Struts2中,使得Struts2不仅继承了WebWork的优点,还在此基础上进行了改进和扩展,成为了...
通过这个压缩包,开发者可以学习到如何自定义Struts2的类型转换器,提高应用的灵活性和可维护性。同时,结合博文链接(https://llxhna.iteye.com/blog/1067851)可能会提供更深入的讲解和示例代码,帮助理解并实践这...
本案例"Struts2之类型转换器的使用案例struts002"深入探讨了如何自定义类型转换器以及在实际应用中的使用。 首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String...
本实例练习旨在帮助你深入理解Struts2的工作原理,特别是自定义类型转换和拦截器的使用。 首先,让我们详细探讨Struts2的MVC架构。在MVC模式中,Model代表业务逻辑,View负责展示数据,而Controller则是两者之间的...
在实际应用中,Struts2转换器不仅可以处理简单的类型转换,还能进行数据验证。例如,你可以在转换器中检查日期是否符合特定格式,或者数值是否在指定范围内。这样,你可以在数据到达业务逻辑之前就捕获并处理潜在的...
这篇博文深入探讨了Struts2中的类型转换机制,通过分析源码和使用工具,帮助开发者更好地理解和应用这一特性。 在Struts2中,类型转换主要由`ValueStack`和`TypeConverter`接口负责。`ValueStack`是一个对象栈,它...
总结来说,Struts2的类型转换机制是其核心功能之一,它有效地解决了HTTP请求数据与Action属性之间的类型不匹配问题。理解并掌握Struts2的类型转换,对于提升Java web应用的开发效率和质量具有重要意义。通过学习和...
8. **类型转换**:Struts2自动处理HTTP请求参数到Action字段的类型转换,减轻了开发者的工作负担。 9. **异常处理**:Struts2提供了全局的异常处理机制,可以统一处理应用中的异常,提高代码的健壮性。 10. **国际...