`
caleb_520
  • 浏览: 247252 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Struts2中的类型转换

阅读更多
在我看了一些关于Struts 2框架中类型转换的blog或是网站,总感觉阐述的比较笼统,而且没有将理论和实践完整的结合起来。就这一点,我自己将Struts 2中的类型转换这个知识点总结如下,让大家参考。但是这个并不说我写的知识点有多好,这些内容只是发起大家一起来讨论。

1、首先将Struts 2框架中类型转换进行一个分类,内容如下:
(1)用户自定义类型转换方法
(2)使用Struts 2中的内建类型转换方法

2、为什么要使用类型转换
在开发Web应用的时候,对于B/S服务器表现层主要用于与用户交互,交互的信息或是请求参数通常是通过浏览器发送到服务器端,这些参数不具备丰富的数据类型,但是数据库中的数据往往是由不同的数据类型组成,因此将浏览器数据存入数据库之前,必须在服务器端完成数据类型的转换。

3、表现层数据处理需要涉及的技术有哪些
当知道表现层数据处理分类,才能明确在将B/S架构开发时候,表现层到底是干什么用的,为什么在J2EE结构中提出表现层。下面是表现层数据处理分类
(1)类型转换
(2)数据校验,包括:客户端校验;服务器端校验

4、自定义类型转换实现流程,流程如下面的箭头


5、有了上面的内容的介绍,我做了自定义局部类型转换器的测试,其步骤和自定义类型转换器流程图片中的步骤相同。下面按照测试的步骤将源码附上,供大家参考

(1)编写一个JavaBean,将请求参数封装成对象。该JavaBean的名称,Person.java
package com.gxa.edu.struts2.action.ch5;
import java.util.Date;
public class Person {
private String username;
private String password;
private Date date;
public Date getDate() {
  return date;
}
public void setDate(Date date) {
  this.date = date;
}
public String getPassword() {
  return password;
}
public void setPassword(String password) {
  this.password = password;
}
public String getUsername() {
  return username;
}
public void setUsername(String username) {
  this.username = username;
}
}


(2)编写一个Action类,来处理URL请求。该Action类的名称,TypeConversionAction.java
package com.gxa.edu.struts2.action.ch5;
import java.util.Date;
public class TypeConversionAction {
private String username;
private String password;
private Date date;
public Date getDate() {
  return date;
}
public void setDate(Date date) {
  this.date = date;
}
public String getPassword() {
  return password;
}
public void setPassword(String password) {
  this.password = password;
}
public String getUsername() {
  return username;
}
public void setUsername(String username) {
  this.username = username;
}
public String execute() {
  System.out.println("/*===进入TypeConversionAction===*/");
  System.out.println("date===" + date);
  return "success";
}
}


(3)自定义类型转换器。该类型转换器名称,TypeConverter.java
package com.gxa.edu.struts2.action.ch5;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
public class TypeConverter extends StrutsTypeConverter{
private static SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
  // TODO Auto-generated method stub
  System.out.println("类型转换===" + arg1[0]);
  Date date = null;
  try {
   if (arg1 != null && arg1.length > 1) {
    String tmp = arg1[0];
    date = sdf.parse(tmp);
   }
  } catch (ParseException e) {
   System.out.println("时间类型转换解析错误");
  }
  return date;
}
@Override
public String convertToString(Map arg0, Object arg1) {
  // TODO Auto-generated method stub
  return sdf.format(arg1);
}
}


(4)编写配置文件。配置文件包含两个:struts-ch5.xml和Person-conversion.properties
struts-ch5.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>
<!-- Struts2 常量配置 -->
<constant name="struts.custom.i18n.resources"
  value="messageResource">
</constant>
<package name="ch5" extends="struts-default" namespace="/ch5">
  <action name="typeConversion" class = "com.gxa.edu.struts2.action.ch5.TypeConversionAction">
   <result>/ch5/welcome.jsp</result>
  </action>
</package>
</struts>
Person-conversion.properties配置文件代码如下:
date=com.gxa.edu.struts2.action.ch5.TypeConverter


(5)运行tomcat,并测试。测试结果分为两个:一个是Eclipse中console信息;一个是welcome.jsp页面显示信息

  • 大小: 64.3 KB
  • 大小: 24.8 KB
  • 大小: 23.9 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics