struts2学习笔记之二、struts2类型转换器

原创 2016年08月29日 21:51:20

1、strtus2的类型转换器分为两种,一种为局部类型转换器,配置文件必与Action在同一个目录下,且格式为:Action名称-conversion.properties;另一种为全局类型转换器,配置文件放在src目录下,文件名称固定为: xwork-conversion.properties


2、编写自己的一个类型转换器的demo


3、我们继续用,我们在笔记一中的工程struts2_first,以后,我们的每的笔记中,都会用到这个工程。

第一步, 在工程下,分别建立com.kingkong.struts2.bean  包和com.kingkong.struts2.converter包,分别存放javabean对象,和类型转换器类


4、在bean 包下建立,javabean类,User类,代码如下:

package com.kingkong.struts2.bean;


import java.util.Date;


public class User {
private  long id;
private String username;
private int age;
private String addr;
private Date birthday;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", age=" + age + ", addr=" + addr + ", birthday="
+ birthday + "]";
}


}



5、在action包下建立UserAction类,,属性为User,并设置get 和set方法,,代码如下:

package com.kingkong.struts2.action;


import com.kingkong.struts2.bean.User;
import com.opensymphony.xwork2.ActionSupport;


public class UserAction extends ActionSupport {


/**

*/
private static final long serialVersionUID = 1L;

private User user;



public User getUser() {
return user;
}






public void setUser(User user) {
this.user = user;
}






@Override
public String execute() throws Exception {
return super.execute();
}


}


6、在jsp目录下,建userLogin.jsp界面,action请求的是,UserAction,为了方便类型转换类中取数,我们将input的name属性统一取名为,UserAction中的name="user",代码如下,

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="userAction" method="post">
用户名:<input type="text" name="user"/><br/>
年龄:<input type="text" name="user"/><br/>
地址<input type="text" name="user"/><br/>
生日<input type="text" name="user"/><br/>
<input type="submit" name="submit" value="submit"/>
</form>
</body>
</html>


7、配置好strtus.xml,在package包是新加入action节点,配置如下:

<action name="userAction" class="com.kingkong.struts2.action.UserAction" >
<result name="success">/jsp/user_success.jsp</result>
</action>


8、建立,访问成功后的action,jsp页面:user_success.jsp,调用action中的user属性,会调用User对象的toString方法,这是java基本,相必大学都懂的,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery-1.12.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<s:property value="user"/>
</body>
</html>

  

9、

6、因为UserAction中,属性为User对象,不属性基本 数据类型,struts2无法进行默认的类型转换,所以要我们自己编写对应的类型转换,来进行类型转换,

在com.kingkong.struts2.converter包下建立,类型转换类,名称可以随便,我们取名称UserConverter,并继承org.apache.struts2.util.StrutsTypeConverter,类,重写其中的两个方法,代码如下:

重写的第一个方法:convertFromString,,此方法处理是的,客户端请求过的的数据,转换成对应的User对象的处理过程

第二方法处理的,给客户端响应的转换数据,,代码如下:


package com.kingkong.struts2.converter;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;


import org.apache.struts2.util.StrutsTypeConverter;


import com.kingkong.struts2.bean.User;


public class UserConverter extends StrutsTypeConverter {


@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
if(User.class.equals(arg2)){
//对应userLogin.jsp中的请求参数
String username = arg1[0];
int age = Integer.valueOf(arg1[1]);
String addr = arg1[2];
SimpleDateFormat sdf =   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
User user = new User();
try {
Date birthday = sdf.parse(arg1[3]);
user.setBirthday(birthday);
} catch (ParseException e) {
e.printStackTrace();
}
user.setUsername(username);
user.setAddr(addr);
user.setAge(age);
return user;
}
return null;
}


@Override
public String convertToString(Map context, Object o) {
if(o instanceof User){
User user = (User)o;
return user.toString();
}
return null;
}


}


10、局部类型转换器,在Action目录下,建配置文件,名称为:UserAction-conversion.properties,,在配置文件中明确,UserAction中的user属性,由哪个类型转换器类,来转换(类开全路径)即可,配置如下:

user=com.kingkong.struts2.converter.UserConverter

11、到此,一个局部类型转换器的demo,的整个流程已经完成,启动tomcat,,访问userLogin.jsp,,转入数据,看是否访问成功即可,

http://127.0.0.1:8080/struts2_first/jsp/userLogin.jsp




点提交后,访问成功,说明,我们的类型转换器已经,转换成功了,可以用debug模式启动eclipse,在UserConverter类中,打一个断点,试一下,




12、全局的类型转换器,其他的流程都一样,只不过properties配置文件不是放到与Action同目录下,而是放到src目录下,而且配置文件名称固定为:

xwork-conversion.properties,配置的内容也不同,key为待转换的对象类名(包的全路径),value为类型转换器类名称(包的全路径),可以自己去试一下吧


如下这样:

com.kingkong.struts2.bean.User=com.kingkong.struts2.converter.UserConverter

版权声明:本文为博主原创文章,未经博主允许不得转载。

Struts2.x 学习笔记 之 类型转换器 和 错误提示修改

这块感觉学得很模糊,虽然两种类型转换器最后都可以,这次重新开个项目来测试。先快速开发,之后详解,最后给源码(1)struts2开发环境搭建起来。传送门:http://blog.csdn.net/fan...

Struts2学习笔记--默认类型转换器(DefaultTypeConverter)使用

第一步: javabean //User.java package com.wenj.bean;   public class User { private String usernam...

【Struts2学习笔记(7)】类型转换器的两种方法

(1)自定义类型转换器

struts2 类型转换器笔记

现在接触的项目几乎都没有用struts2,所以相对来说还是不太熟悉.本篇只是感觉不错的亮点,记录一下.类型转换器:(以日期类型转换为例) public void DateTypeConverter ...

Struts2笔记之自定义封装请求参数的数据类型转换器

自定义类型转换 作用: 默认情况下,页面的日期类型只能接收 yyyy-MM-dd类型,如果要转换yyyy/MM/dd这种类型,则需要使用自定义类型转换器进行转换。 strut2提供了自定义类型转换器的...

Struts2系统学习(8)自定义类型转换器

8. Struts2自定义类型转换器  应用中,常需要将字符串请求参数转换为相应的数据类型,或将一定的数据类型类型转换为字符串显示显示给用户,Struts2提供了类型转换机制。   Struts2的...
  • Mark_LQ
  • Mark_LQ
  • 2015年11月13日 19:33
  • 742

【转载】Struts2学习总结 ---- 数据类型转换器Converter

转换器 converterStruts2支持在自动将在前台请求过来的数据转换成相应的java对象;它是通过一个一个的类型转换器实现的.具体的内置类型转换器有: 转制换器类型 功能 String将int...

Struts2中的类型转换器学习(升级版)

原理原理和我的另外一篇相同的一样。(此次是局部类型转换,全局请看另外一篇)继承StrutsTypeConverter….之后重写方法主要文件有以下:Convert.java、UserAction-co...

Struts2中的类型转换器学习

类型转换器知识笔记。知识补充:在form表单提交的数据,会被params拦截器注入到相应的Action。因此,非对象级的,Action内部的变量,将会与form表单中的input[name]中的nam...

Struts2 自定类型转换器(三十四)

1.Struts2中的类型转换器的注册方法 注册局部类型转换器 比如: action范围 注册全局类型转换器 比如: 整个应用程序 2.编写 自定义类型转换器类 继承 DefaultTy...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2学习笔记之二、struts2类型转换器
举报原因:
原因补充:

(最多只允许输入30个字)