`
esffor
  • 浏览: 1370604 次
  • 性别: 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简单实例(类型转换方法对比)

    本实例主要探讨了在Struts2中进行类型转换的三种方法:局部类型转换、全局类型转换以及大量数据类型的转换。对于初学者来说,理解并掌握这些转换方式至关重要,因为它们能够帮助我们处理用户输入的数据,并将其转化...

    Struts2的转换器与验证框架

    在处理用户表单提交的数据时,Struts2提供了一套完善的转换器(Converter)和验证(Validation)框架,使得类型转换和数据验证变得更加便捷和高效。 ### 1. Struts2 内置转换器 Struts2 自带了一系列内置转换器,...

    struts2的类型转换详解

    Struts2 的类型转换是其框架中的一个重要特性,它允许开发者轻松地将用户提交的字符串数据转换为应用程序所需的各类数据类型。在 MVC 框架中,用户输入的数据通常是字符串形式,而Java作为强类型语言,需要将这些...

    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_...

    Struts2应用开发详解05

    总之,Struts2的批量类型转换是其强大功能之一,它使得处理批量数据的转换变得更加便捷和灵活。开发者通过理解并熟练掌握这一特性,可以提升代码的可读性和维护性,同时减少手动处理类型转换的工作量。

    struts2中类型转换实例代码

    1. **String**:可以将int、long、double、boolean、String数组转换为字符串。 2. **boolean/Boolean**:支持字符串到布尔值的相互转换。 3. **char/Character**:在字符串和字符之间进行转换。 4. **int/Integer, ...

    struts2整合jfreechart

    使用`&lt;s:property value="byteArray" /&gt;`标签,并设置`escape="false"`,以防止字符转义,这样Struts2会自动处理这个字节数组,将其作为图像数据输出。 最后,通过发送HTTP请求到对应的Struts2 Action,用户就可以...

    ajax+json+Struts2实现list传递实例讲解.docx

    总结来说,这个实例演示了如何利用Ajax、JSON和Struts2框架在客户端与服务器之间传递和展示List数据,无需刷新整个页面。通过这种方式,可以提高用户体验,使Web应用更加动态和交互性更强。在实际开发中,这样的技术...

    Struts2的总结和Strut2集成Spring

    拦截器是Struts2的核心机制之一,它可以在请求处理的各个阶段进行拦截,执行额外的逻辑,如权限检查、数据验证等。 #### 拦截器实现原理 拦截器的实现基于AOP(面向切面编程)的思想,通过定义拦截器栈,可以灵活...

    Struts2框架基础 二

    **ValueStack**是Struts2框架中的核心组件之一,用于管理请求周期内的数据。它是OGNL表达式的默认根对象,提供了强大的数据管理和操作能力。 ##### 2.1 ValueStack的使用 - **存入数据**: ```java // 获取当前...

    Struts2学习文档

    - **概念介绍**:Struts2提供了许多内置的类型转换器,如`IntegerTypeConverter`、`DateTypeConverter`等,这些转换器用于自动将表单提交的数据转换为目标对象的类型。 **5.2 基于OGNL的类型转换** - **5.2.1 直接...

    struts2--3.Ognl与值栈

    值栈是Struts2中的一个核心概念,它是一个基于栈的数据结构,用于存储Action实例和其他相关对象。值栈的主要作用是简化数据的管理,提供了一种将Action与视图解耦的方式。 1. **Action上下文**:每个Action实例在值...

    struts2-jar包

    XWork提供了类型转换、数据验证、拦截器(Interceptor)等功能,这些是Struts2处理请求和响应的核心机制。 `javassist-3.11.0.GA.jar`是Java编程辅助工具,它允许在运行时修改类文件或生成新的类。Struts2使用它来...

    struts结合autocomplet实例代码

    Struts是Java Web开发中的一款经典MVC框架,它的核心思想是将业务逻辑、数据访问和用户界面分离,使得开发者可以更加专注于各自领域的实现。在Struts框架中,常常会结合各种前端技术来提升用户体验,其中之一就是...

    Struts2返回json格式数据代码实例

    Struts2提供了对JSON的支持,允许开发者在Action层处理业务逻辑后,以JSON格式返回数据给客户端。 从给定的文件内容来看,该文档详细介绍了如何在Struts2框架中实现返回JSON格式数据的示例。以下将基于提供的代码...

    ajax struts 无刷新访问后台返回json数据

    它可以表示数组(list)、对象(map)以及基本数据类型,与JavaScript语法高度兼容,非常适合用于前后端数据交互。 ### 4. 实现过程 #### 4.1 后端处理 - **配置Struts Action**:创建一个Struts Action类,处理...

    struts2.0标签使用源码

    当JSP解析器遇到一个Struts2标签时,会根据TLD找到对应的标签处理类(TagHandler)并实例化,执行其doStartTag()和doEndTag()等方法。例如,`s:property`标签对应的处理类可能是`PropertyTag`。 在`PropertyTag`中...

Global site tag (gtag.js) - Google Analytics