004-struts2类型转换一

这篇博客,主要介绍一下struts2的类型转换。

首先来解释一下这里的类型转换是指什么疑问

客户端访问服务器,学过JSP语言的童鞋应该知道,客户端的请求,在服务器端我们用JSP内置对象request的getParameter()方法所获得的请求参数是字符串String类型,而不管该数据原本是Date类型还是int类型,获得的结果都是String类型,在JSP时需要自己去转换,而这些基本类型struts2会自动帮我们转化,只要在action类中定义相应get和set方法即可。但是,如果想在服务器端以类的方式存储数据,比如个人信息存储,这是就要进行数据类型装换了;同样服务器在发送数据到客户端时也需要类型转换,即类型转换是双方向的。


现在,我们用一个例子介绍一下怎么进行类型转换。


1、建立一个commit.jsp页面,代码如下:

<body>
    <form action="docommit.action" method="post">
       person information:delimitered by '-',username-age-gender<br>
       <textarea rows="10" cols="30" name="person">
       </textarea>
       <br>
       <input type="submit" value="submit">  
       <input type="reset" value="reset">
    </form>
  </body>

2、建立一个结果页面result.jsp,代码如下:

这里用到了struts标签库。

<%@ taglib uri="/struts-tags" prefix="s" %>
<body>
    person information:<br>
    <s:property value="person"/><br>
</body>

3、src下建包com.xbb.bean,在包下建立Person类:

package com.xbb.bean;

public class Person {

	private String username;
	private int age;
	private String gender;

	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 getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}
	
}

4、在包com.xbb.action下,建立类DoCommit:

该类继承ActionSupport类,ActionSupport是struts2框架中提供给我们的,里面实现了很多Action类所需要的一些方法,比如execute方法等

package com.xbb.action;

import com.opensymphony.xwork2.ActionSupport;
import com.xbb.bean.Person;

public class DoCommit extends ActionSupport {

	private Person person;
	
	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

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

5、在struts.xml加入action配置:

<action name="docommit" class="com.xbb.action.DoCommit">
    <result name="success">/result.jsp</result>
</action>

6、在对应的需要类型转换的action类的同一个包下建立属性文件,这里是在com.xbb.action包下建立,命名规则为“对应action类名-conversion.properties”,此处我们建立文件DoCommit-conversion.properties:

person=com.xbb.converter.PersonConverter

等于号右边表示处理类型转换的类,这个类下面即将建立。等号左边person指定需要类型转换的属性,struts2框架是根据属性文件名DoCommit-conversion.properties中“-”前的类名来判断person是其的属性。下面来建立类型转换处理类com.xbb.converter.PersonConveter。

7、建立包com.xbb.converter,在该包下面建立类PersonConverter:

该类继承了StrutsTypeConverter类,此类两个方法:

convertFromString方法是客户端向服务端数据转换,第二个参数是String[]类型,存储待转换的字符串,这里将其转换成Person类存储在服务器端。

convertToString方法是将服务端数据向客户端转换,其中第二个参数是Object类型,存放的就是待转换的类对象。

package com.xbb.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.xbb.bean.Person;
public class PersonConverter extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		Person person = new Person();
		String[] values = arg1[0].split("-");
		person.setUsername(values[0]);
		person.setAge(Integer.parseInt(values[1]));
		person.setGender(values[2]);
		return person;
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		Person person = (Person)arg1;
		String back = "username:" + person.getUsername() + 
		              "  age:" + person.getAge() + 
		              "  gender:" + person.getGender();
		return back;
	}

}

至此, 一个简单的字符串转类,类转字符串的例子就编写完了,在浏览器中输入 http://localhost:8080/Struts/commit.jsp ,填入数据:


点击submit,得到结果:

证明程序运行无误,数据类型转换正确。大笑







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值