`
esffor
  • 浏览: 1352502 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2数据转换实例之数组转换

阅读更多

MVC的设计模式,存在从用户WEB页面输入和实际JavaBean属性之间的自动类型转换问题

功能需求:页面上输入“用户名,密码”,将前半部分自动映射到User类的username属性中,将后半部分自动映射到User类的password属性中

User.java

 

package HelloWorld;

public class User ...{
    
private String username;
      
private String password;
      
private String[] books;
      
public String[] getBooks() ...{
            
return books;
        }

        
public void setBooks(String[] books) ...{
            
this.books = books;
        }

        
public String getUsername() ...{
            
return username;
        }

        
public void setUsername(String username) ...{
            
this.username = username;
        }

        
public String getPassword() ...{
            
return password;
        }

        
public void setPassword(String password) ...{
            
this.password = password;
        }

}

 LoginAction.java

 

package HelloWorld;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class LoginAction implements Action...{
 
 
private String tip;

  
private User user;

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


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


public String execute() throws Exception...{
      
if(this.getUser().getUsername().equals("admin")&&this.getUser().getPassword().equals("1234"))...{
          ActionContext.getContext().getSession().put(
"user"this.getUser().getUsername());
          BookService bs
=new BookService();
          
this.getUser().setBooks(bs.getBooks());
          
this.setTip("welcome welcome");
          
return SUCCESS;
      }
else...{
          
return ERROR;
      }

  }


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

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



  
}

 

LoginAction的类型转换器,实现从String到User的双向转换

 

package HelloWorld;

import java.util.Map;

import ognl.DefaultTypeConverter;

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.setUsername(userValues[
0]);
                    user.setPassword(userValues[
1]);
                    
return user;

                }

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

  


转换器配置文件(命名规则为ActionName-convrsion.proipertoes,如果是全局的,命名为xwork.conversion.properties),局部配置文件放在和Action同一个目录下,如果是全局的配置文件,则放到WEB-INF/classes下

user=HelloWorld.UserConverter  (Action中的user对象使用UserConverter转换器)

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 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_2_5.xsd">
 <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>

 

struts.xml(WEB-INF/classes下)

<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 <package name="struts" extends="struts-default">
    <action name="Login" class="HelloWorld.LoginAction">
      <result name="input">/helloworld/index.jsp</result>
      <result name="success">/helloworld/welcome.jsp</result>
     
      <result name="error">/helloworld/error.jsp</result>
    </action>
 </package>
</struts>

 

struts.properties (WEB-INF/classes下)

struts.custom.i18n.resources=messageResource

 

messageResource.properties

pass.required = \u5BC6\u7801\u5FC5\u987B\u8F93\u5165
password = \u7528\u6237\u5BC6\u7801
user.required = \u7528\u6237\u540D\u5FC5\u987B\u8F93\u5165
username = \u7528\u6237\u59D3\u540D

 

分享到:
评论

相关推荐

    struts2入门实例1

    struts2 最新的入门实例 我自己总结的 呵呵,欢迎提出宝贵的意见 1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp--------------...

    struts2入门实例2 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    struts2入门实例4 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    struts2入门实例3 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java语言基础下载

    Struts ActionForm Bean捕获表单数据 648 ActionForm的处理流程 649 Struts的其他组件 652 内容总结 653 独立实践 653 第三十二章:配置Struts组件 654 学习目标 654 三个 XML文件和一个属性文件 655 Web应用部署...

    Java学习笔记-个人整理的

    {4.14}数组转换为集合}{89}{section.4.14} {4.15}Map的迭代}{90}{section.4.15} {4.15.1}字符统计}{91}{subsection.4.15.1} {5}格式化输入输出}{94}{chapter.5} {5.1}时间与日期}{94}{section.5.1} {5.1.1}...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

    java面试题

    Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...

    JAVA面试题最全集

    数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何...

    超级有影响力霸气的Java面试题大全文档

     ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,...

    最新Java面试宝典pdf版

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    Java面试宝典2010版

    8、说说struts1与struts2的区别。 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 11、iBatis与...

Global site tag (gtag.js) - Google Analytics