浅记Struts2中的类型转换

继续我的struts2学习之旅、、、、、

 

在struts2里面,对于8个原生数据类型和String、date等常用的数据类型,struts2自带了类型转换器,会自动转换。

今天我要记录的是对于自定义的类型,要如何进行类型转换。

 

首先我们要明白的是,对于页面的数据类型都是String的,但是对于后台处理的时候,就会分成不同的类型了,所以我们的数据从页面到后台的处理需要先经过类型转换,后台数据显示的时候也要先转换成String类型。这是背景!!!

 

好吧,把这个过程跟着回忆走一遍吧、、、、

 

1、页面有请求,就会去到Struts.xml(中间的web.xml我就不罗嗦了)

2、在Struts2.xml里,它会找到相对应的action,然后根据class的指示,就会找到对应存放action的package,在这个package里面要new一个file属性文件,里面的内容很简单:user=com.xin.converter.UserConverter(回头再解释)。

3、如果是使用内建的类型转换器的话,这时候就应该是去写action了。但是由于我们是使用自定义类型,所以我们要先做一下类型转换。

new一个package叫做com.xin.converter。然后我们在里面new一个UserConverter.java.(converter是转换器的意思)。这个页面就是完成类型转换功能的。(具体稍后解释)

4、当转换器写好之后,我们就可以去些action页面了,new一个class去完成action的工作,就叫userAction吧,然后根据这里的return的value我们就知道要返回对应struts.xml的哪一个result了

5、在struts.xml里根据result指示的路径,跳转到相应的页面(记为output.jsp)

6、在这里我们会设置一个标签,根据标签指示跳转到 转换器里面,把需要显示的信息转换成String类型。

 

大概的步骤就是这样,写的有点乱、、、

 

以下是分析一些本人认为重点的东西!!!

1、属性文件

 

这是放在action哪个package下的一个属性文件,属性名是由需要进行属性转换的action名和conversion.properties组成,例如:UserAction-conversion.properties。编译器根据属性文件的名字就知道哪个action是需要进行类型装换的。

对于自定义的的类型转换器有3个需要提供的信息,action的名字,action中待转换的属性名已经该属性对应的类型转换器。其中action的名字是通过属性文件名获得的,然后action待转换的属性名是key指定的,他说对应的转换器就有value指定。所以整个文件的类容很少,只是user=com.xin.converter.UserConverter(有多少要转换的属性就设置多少个key)。

 

2、类型转换器

 

贴出代码再分析:


import java.util.Map;
import java.util.StringTokenizer;

import ognl.DefaultTypeConverter;

import com.shengsiyuan.bean.User;

public class UserConverter extends DefaultTypeConverter

 //继承的父类是默认的类型转换器,相当于一个抽象类,我们要做的 是把它实例化
{
 @Override
 public Object convertValue(Map context, Object value, Class toType)
 {
  if(User.class == toType)  //从页面向后台对象转换
  {
   String[] str = (String[])value;//用字符串数组接收,没有用字符的,
   
   String firstValue = str[0];
   
   StringTokenizer st = new StringTokenizer(firstValue, ";");//以;为分割标记
   
   String username = st.nextToken();
   String password = st.nextToken();
   
   User user = new User();
   
   user.setUsername(username);
   user.setPassword(password);
   
   return user;  
  }
  else if(String.class == toType) //从后台对象向页面转换
  {
   User user = (User)value;
   
   String username = user.getUsername();
   String password = user.getPassword();
   
   String userInfo = "username: " + username + ", password: " + password;
   
   return userInfo;
  }
  
  return null;
 }
}

 

 

算了,后面的转换器也不会怎么解释,能看懂得就看吧,看不懂就找视频看,我是看圣思园的教学视频的、、、、

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值