创建action来处理用户的输入数据
4 创建action
private Point point ;
private int age ;
private String username ;
private Date date ;
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;
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public String execute() throws Exception {
return SUCCESS ;
这里Action最好是继承ActionSupport类 public class PointConverterAction extends ActionSupport
因为ActionSupport本身已经实现许多我们经常要实现的功能,这样可以给我们省很多事情,有时只需简单的覆盖它的一些方法就可以实现相应的功能
5,创建类型装换器
我们可以通过查看struts2的api获得以下信息
java。lang。object
|---ognl。DefaultTypeConverter
|--org.apache.struts2.util.StrutsTypeConverter
最原始的的转换器需要实现TypeConverter
而ognl下的defaulttypeconverter已经给我们实现了这个接口,而struts2又提供给了我们一个更加简单的实现类StrutsTypeConveter
所以我们有两种基本的方法编写类型转换器
1.继承DefaultTypeConverter类
2。继承StrutsTypeConverter类
下面分别给出两种方法的实现
1.
package com.yxy.converter;
import java.util.Map;
import com.yxy.bean.Point;
import ognl.DefaultTypeConverter;
public class PointConverter extends DefaultTypeConverter {
public Object convertValue(Map context, Object value, Class toType) {
if(Point.class == toType) {
Point point = new Point() ;
String[] paramValue = (String[])value ;
String[] pointValue = paramValue[0].split(",") ;
int x = Integer.parseInt(pointValue[0]) ;
int y = Integer.parseInt(pointValue[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 ;
}
}
2.
package com.yxy.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.yxy.bean.Point;
public class PointConverter2 extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values, Class toClass) {
Point point = new Point() ;
String[] paramValues = values[0].split(",") ;
int x = Integer.parseInt(paramValues[0]) ;
int y = Integer.parseInt(paramValues[0]) ;
point.setX(x) ;
point.setY(y) ;
return point ;
}
public String convertToString(Map context, Object o) {
Point point = (Point)o ;
int x = point.getX() ;
int y = point.getY() ;
String result = "[ x = " + x + ", y = "+y + "]";
return result ;
}
}
这两个方法可以实现双向的转换,即从用户端到服务器端和服务器端到用户端,其实很明显也是需要这样设计的
6,编写属性文件
现在已经编写好了相应的类型转换器,我们需要将利用属性文件使用它
在action的同一个目录下面放置属性配置文件,命名规则是***-conversion。properties,其中***为action的名字,后面的对于所有局部类型转换器都一样(关于局部和全局稍后再讲)
在属性文件里面编写下面一行代码,其中point指定的是action中需要被转换的属性名,后面很明显表示转换器所在的完整类
point=com.yxy.converter.PointConverter
这里强调主要是考虑到与后面全局类型转换器进行编写上的比较
7,编写struts。xml文件
因为所有应用的业务文件都已经编写完了,这时我们需要将所有的流程进行控制,这样就需要用到struts.xml,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="struts-default">
<action name="PointConverter" class="com.yxy.action.PointConverterAction">
<result name="success">/output.jsp</result>
<result name="input">/input.jsp</result>
</action>
</package>
</struts>
代码如上,这里定义了返回页面,对应于相应的返回字符串
8,编写输出页面output。jsp
转换后的信息需要输出,
point:<s:property value="point" /><br>
age:<s:property value="age" /><br>
username:<s:property value="username" /><br>
birthday:<s:property value="date" />
补充:
对于全局类型转换配置文件:
命名规则:xwork-conversion.properties
内容:com.yxy.bean.Point = com.yxy.converter.PointConverter2
其中前面表示在应用中需要转换的类,在局部类型转换中表示的是某个action中需要被转换的属性,注意比较,
后面表示完成这个类类型转换的类,同局部类型转换一样
如果需要转换的类型为Map,List等集合类,将相应的类型转换类改变即可
分享到:
相关推荐
Struts2是一个流行的Java web开发框架,其核心是Action,而类型转换是Struts2处理用户输入数据的一个重要环节。Struts2内置了多种类型转换,可以将HTTP请求中的字符串数据转换为各种基本类型和复杂类型,如日期、...
在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...
本篇文章将深入探讨Struts2中的类型转换机制。 1. **类型转换的概念** 类型转换是指将一个数据类型的值转换为另一个数据类型的过程。在网络请求中,用户输入的数据通常是字符串类型,而服务器端的Action类属性可能...
Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...
在Struts2中,类型转换和国际化是两个重要的特性,用于处理数据类型之间的转换以及多语言环境下的内容显示。 **类型转换**是Struts2处理请求参数与Action类属性之间数据类型不匹配的过程。当用户通过表单提交请求时...
Struts2提供了一些工具类和方法来辅助类型转换,比如`FieldError`用于记录转换失败的字段和错误信息,`ValueStack`提供了`convertValue`方法进行转换,以及`ActionContext`中的`getValueStack`方法获取当前栈顶的`...
### Struts2类型转换与验证流程详解 #### Struts2框架概述 Struts2是一个用于构建企业级Java Web应用的强大框架。它集成了MVC设计模式,并提供了丰富的插件支持和灵活的配置选项。在Struts2中,类型转换和验证机制...
在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括类型转换、拦截器和校验机制。本文将深入探讨这些关键知识点,并通过实际例子来帮助你理解它们的工作原理和应用。 首先,我们来看看**类型转换...
struts2类型转换机制
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
熟悉和掌握Struts2自定义类型转换。 熟悉和掌握Struts2内建校验的操作方法 实验环境与设备: 已经接入局域网的网络实验室,机器上装有IE浏览器等; strtus2.5.8 实验内容: (1) 编写一个...
Struts2是一个强大的MVC框架,它在处理用户请求时提供了丰富的功能,其中包括类型转换(Converter)。类型转换是Struts2框架中一个重要的特性,它允许我们把前端表单提交的数据自动转换为后端Java对象的属性。在这个...
2. **自定义转换器**:如果需要处理特殊类型或有特定转换规则,可以通过实现`org.apache.struts2.util.TypeConverter`接口创建自定义转换器,并通过`@Result`注解或者`struts.xml`配置文件进行注册。 3. **转换异常*...
《STRUTS2类型转换错误导致OGNL表达式注入漏洞分析》 STRUTS2框架在处理用户输入时出现的类型转换错误,可能导致OGNL(Object-Graph Navigation Language)表达式注入漏洞。此漏洞允许攻击者通过精心构造的输入,...
在Struts2中,类型转换是一项关键功能,它允许框架将用户输入的数据自动转换为应用程序需要的特定数据类型。这篇博客文章可能是关于Struts2内部的类型转换机制及其使用的探讨。 在Struts2中,类型转换是通过`...