struts2-局部类型和全局类型转换器

局部类型转换器 :
1)局部类型转换器仅仅对某个Action的属性起作用
2)properties文件名对应于Action类名,而且格式为 'Action类名-conversion.properties',
文件必须和Action类处于同一个包下,properties文件内容格式为:属性名=对应转换封装类路径。

全局类型转换器: 
1)全部类型转换器对所有Action的特定类型的属性都会生效。
2)properties文件名固定’xwork-conversion.properties‘,
文件处于src目录下,properties文件 内容格式为:类名名=对应转换封装类路径。

实例:

编辑环境: myeclipse10+struts2.2.1

局部类型转换器实现:

1)建3个jsp

index.jsp

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>局部类型转换器</title>
</head>
<body>
<form action="abc.action" method="post">
    <table align="center" width="360">
    <caption><h3>局部类型转换器</h3></caption>
        <tr align="center">
            <td>用户信息的用户名和密码以英文逗号隔开</td>
        </tr>
        <tr>
            <td>请输入用户信息:<input type="text" name="user"/></td>
        </tr>
        <tr align="center">
            <td><input type="submit" value="转换"/><input type="reset" value="重填" /></td>
        </tr>
    </table>
</form>
</body>
</html>

welcome.jsp

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>转换成功</title>
    </head>
    <body>
        转换成功!<br>
		用户名为:<s:property value="user.name"/><br>
		密码为:<s:property value="user.pass"/><br>
    </body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    不合法,无法转换. <br>
  </body>
</html>

2) 修改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.FilterDispatcher
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  </web-app>

3)创建类:LoginAction.java  User.java UserConverter.java

package jk;

import com.opensymphony.xwork2.Action;

/**
 * @author  love_jk
 * <br>Date: 2014-02-15
 */

public class LoginAction implements Action
{
	private User user;
	private String tip;

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

	public void setTip(String tip)
	{
		this.tip = tip; 
	}

	public User getUser() 
	{
		return (this.user); 
	}

	public String getTip() 
	{
		return (this.tip); 
	}

    public String execute() throws Exception
	{
        if (getUser().getName().equals("admin")
			&& getUser().getPass().equals("123") )
		{
			setTip("转换成功");
            return SUCCESS;
        }
		else
		{
			setTip("转换失败");
            return ERROR;
        }
    }
}
package jk;

/**
 * @author  love_jk
 * <br>Date: 2014-02-15
 */

public class User
{
	private String name;
	private String pass;

	
	public void setName(String name) 
	{
		this.name = name; 
	}

	public void setPass(String pass)
	{
		this.pass = pass; 
	}

	public String getName() 
	{
		return (this.name); 
	}

	public String getPass() 
	{
		return (this.pass); 
	}
}
package jk;

import java.util.Map;
import ognl.DefaultTypeConverter;


/**
 * @author  love_jk
 * <br>Date: 2014-02-15
 */

public class UserConverter extends DefaultTypeConverter 
{
    public Object convertValue(Map context, Object value, Class toType)
	{
        if (toType == User.class )
		{
			String[] params = (String[])value;
			User user = new User();
			String[] userValues = params[0].split(",");
			user.setName(userValues[0]);
			user.setPass(userValues[1]);
			return user;

        }
		else if (toType == String.class )
		{
			User user = (User) value;
			return "<" + user.getName() + "," + user.getPass() + ">";
        } 
        return null ;
    } 
} 

 

4) 创建LoginAction-conversion.properties

user=jk.UserConverter

5) 编辑struts.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <package name="jk" extends="struts-default">
        <action name="abc" class="jk.LoginAction">
            <result name="success">/welcome.jsp</result>  
            <result name="error">/error.jsp</result>     
        </action>
    </package>
</struts>   

--------------------------------------------------------------------------

全部类型转换器实现:

1)建3个jsp

index.jsp

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>全局类型转换器</title>
</head>
<body>
<form action="abc.action" method="post">
    <table align="center" width="360">
    <caption><h3>全局类型转换器</h3></caption>
        <tr align="center">
            <td>用户信息的用户名和密码以英文逗号隔开</td>
        </tr>
        <tr>
            <td>请输入用户信息:<input type="text" name="user"/></td>
        </tr>
        <tr>
            <td>请输入客人信息:<input type="text" name="customer"/></td>
        </tr>
        <tr>
            <td>用户生日:<input type="text" name="birth"/></td>
        </tr>
        <tr align="center">
            <td><input type="submit" value="转换"/><input type="reset" value="重填"/></td>
        </tr>
    </table>
</form>
</body>
</html>


welcome.jsp

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>转换成功</title>
    </head>
    <body>
        转换成功!<br>
		用户的用户名为:<s:property value="user.name"/><br>
		用户的密码为:<s:property value="user.pass"/><br>
		用户的生日为:<s:property value="birth"/><br>
		客人的用户名为:<s:property value="customer.name"/><br>
		客人的密码为:<s:property value="customer.pass"/><br>
    </body>
</html>

 

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    不合法,无法转换. <br>
  </body>
</html>
 

2) 修改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.FilterDispatcher
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  </web-app>

 

3)创建类:LoginAction.java  User.java UserConverter.java

package jk;

import com.opensymphony.xwork2.Action;
import java.util.Date;

/**
 * @author  love_jk
 * <br>Date: 2014-02-15
 */

public class LoginAction implements Action
{
	private User user;
	private User customer;
	private Date birth;
	private String tip;

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

	public void setCustomer(User customer) 
	{
		this.customer = customer; 
	}

	public void setTip(String tip)
	{
		this.tip = tip; 
	}
	
	public void setBirth(Date d)
	{
		this.birth = d;
	}

	public User getUser() 
	{
		return (this.user); 
	}

	public User getCustomer() 
	{
		return (this.customer); 
	}

	public Date getBirth()
	{
		return this.birth;
	}

	public String getTip() 
	{
		return (this.tip); 
	}

    public String execute() throws Exception
	{
        if (getUser().getName().equals("admin")
			&& getUser().getPass().equals("123") )
		{
			setTip("转换成功");
            return SUCCESS;
        }
		else
		{
			setTip("转换失败");
            return ERROR;
        }
    }
}
package jk;

/**
 * @author  love_jk
 * <br>Date: 2014-02-15
 */

public class User
{
	private String name;
	private String pass;

	
	public void setName(String name) 
	{
		this.name = name; 
	}

	public void setPass(String pass)
	{
		this.pass = pass; 
	}

	public String getName() 
	{
		return (this.name); 
	}

	public String getPass() 
	{
		return (this.pass); 
	}
}


 

package jk;

import java.util.Map;
import ognl.DefaultTypeConverter;
import org.apache.struts2.util.StrutsTypeConverter;
import java.util.List;
import java.util.ArrayList;


/**
 * @author  love_jk
 * <br>Date: 2014-02-15
 */


public class UserConverter extends StrutsTypeConverter 
{

    public Object convertFromString(Map context, String[] values, Class toClass)
	{
		User user = new User();
		String[] userValues = values[0].split(",");
		user.setName(userValues[0]);
		user.setPass(userValues[1]);
		return user;
    }

    @Override
    public String convertToString(Map context, Object o)
	{
		User user = (User)o;
		return "<" + user.getName() + "," + user.getPass() + ">";

    }


} 


 

4) 创建xwork-conversion.properties

jk.User=jk.UserConverter

5) 编辑struts.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
 <package name="jk" extends="struts-default">

        <action name="abc" class="jk.LoginAction">
            <result name="success">/welcome.jsp</result>  
            <result name="error">/error.jsp</result>       
        </action>
    </package>
</struts>    

 



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值