`
归来朝歌
  • 浏览: 7839 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

浅谈struts应用之类型转化

阅读更多

  在Web开发中,可能遇到这样两个场景:
  1:文本框中提交一个字符串,用","分割开来,每一个被分割的内容代表java bean的一个属性,现在需要将该文本中的字符串传到后台,进行处理后将该bean类保存起来
  2:在页面上选择自己的爱好(多选),将选择的结果传到后台,而获取选择爱好的属性为list,现在需要分别将每个爱好保存起来

  对于以上两个场景,虽然用jsp和servlet可以解决,但是代码不利于复用以及重构,现在用struts2框架提供的类型转化器进行转化。

  对于场景一,处理步骤如下:

  (1)创建一个Jsp页面,提供表单信息:
   <s:form action="converAction_testUserConverter">
     用户名和密码:<s:textfield name="user" ></s:textfield>
     <s:submit value="提交"></s:submit>
   </s:form>

  (2)创建一个java bean类User:

package day9.bean;

public class User {
	private String username;
	private String password;
	
	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;
	}
	
	
}

 

  (3)写一个Action类ConvertAction,接收页面传来的数据:

 

package day9;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import day9.bean.User;

public class ConvertAction extends ActionSupport{
	//变量名user必须与form表单中的name相同,才能进行类型驱动
	private User user;
	//测试类型转化,输出类的属性信息	
	public String testUserConverter(){
		System.out.println(user.getUsername());
		System.out.println(user.getPassword());
		return "index";
	}
	public String testListConverter(){
  
               for(String temp:aihaos){ 
   
                     System.out.println(temp);
  
               }
  
               return "index";
 
       }
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	public List<String> getAihaos() {
		return aihaos;
	}
	public void setAihaos(List<String> aihaos) {
		this.aihaos = aihaos;
	}
		
}
  

  (4)编写一个转化器类UserConverter,需要继承类StrutsTypeConverter,并重写父类的convertFromString方法和convertToString方法:

 

package day9;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import day9.bean.User;

public class UserConverter extends StrutsTypeConverter{
	/*从页面到action的转化*/
	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
            String[] temp = values[0].split(",");
	    User user = new User();
	    user.setUsername(temp[0]);
	    user.setPassword(temp[1]);
		return user;
	}

	@Override
	public String convertToString(Map context, Object o) {
		// TODO Auto-generated method stub
		return null;
	}
	
}

   (5)编写配置文件struts-converter.xml,并在主配置文件中struts.xml文件中导入:

  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="converter" namespace="/" extends="struts-default">
		<action name="converAction_*" method="{1}" class="day9.ConvertAction">
			<result name="index">index.jsp</result>
		</action>
	</package>
</struts>

   (5)最后需要在src目录下写一个xwork-conversion.properties配置文件,需要告知struts内核,你要用什么类型转换器来转成你想要的什么类型。

   配置需求: key值为转化后的类型,value值为转化器

   我是这样配置的:day9.bean.User=day9.UserConverter

  

   至于场景二,可以用场景一相似的方法进行转化,最后的配置文件格式为  :  java.util.List=day9.ListConverter

 

   通过以上设置,可以很easy地得到username和password的值,关于类型转化器大概就写到这里吧~

   

4
0
分享到:
评论

相关推荐

    通信与网络中的浅谈STRUTS框架应用对于Web服务扩展的作用

    使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。  1 Struts框架应用模式  1)建立在MVC这种公认...

    struts2数据类型转换器

    总的来说,了解和掌握Struts2的数据类型转换机制对于开发高效、健壮的Java Web应用至关重要。通过自定义转换器,我们可以灵活地控制数据的转换过程,确保应用程序能正确处理用户输入,避免因为类型不匹配导致的错误...

    浅谈Struts框架技术.

    Struts框架技术是一种基于Model-View-Controller (MVC)设计模式的开源Web应用程序框架,由Apache软件基金会维护。它的核心目标是简化Java Servlet和JSP应用的开发,提高可维护性、可扩展性和组件的复用性。Struts...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    总之,Struts2的类型转换机制是其强大功能之一,它简化了数据绑定过程,使得开发者能够专注于业务逻辑,而不是数据转换的细节。理解并熟练掌握Struts2的类型转换,将有助于提高开发效率和代码质量。在实际项目中,应...

    struts2简单实例(类型转换方法对比)

    `struts2test2`可能展示了局部类型转换的应用,`struts2test4`可能是关于全局类型转换的实例,而`struts2test3`可能用于演示处理大量数据类型的转换。通过查看和运行这些代码,你可以更直观地理解每种转换方法的实现...

    struts2简单实例(类型转换)

    Struts2框架提供了一种机制,即类型转换器(Type Converter),用于自动将请求参数转化为预期的数据类型。 在Struts2中,实现类型转换主要有两种方式: 1. 使用内置的类型转换器:Struts2已经内置了一些常见的类型...

    struts 2.0 自定义类型转换器 注册类型转换器 入门实例 简单实例

    自定义类型转换器是Struts 2的核心特性之一,允许开发者根据业务需求定制数据转换规则。以下将详细介绍如何创建、注册以及使用自定义类型转换器。 1. **创建自定义类型转换器** - 创建一个类,实现`org.apache....

    struts2 类型转换器

    总的来说,理解并熟练运用Struts2的类型转换器对于开发基于Struts2的Java Web应用程序至关重要,它能帮助我们更好地处理用户输入的数据,提高代码的健壮性和灵活性。通过自定义类型转换器,我们可以解决框架默认转换...

    Struts2自定义类型转换

    本文将深入探讨Struts2自定义类型转换的原理、分类以及具体实施步骤,帮助开发者更好地理解和应用这一功能。 #### 自定义类型转换原理 Struts2框架内置了一套类型转换系统,能够自动将前端表单提交的字符串数据...

    struts2的类型转化的实例小程序

    总的来说,Struts2的类型转化功能为开发者提供了灵活性,使得我们可以根据项目需求定制数据转换规则,无论是对单个Action还是整个应用范围。熟练掌握这一特性,有助于提高代码的可维护性和用户体验。

    struts2自定义类型转换器

    这个过程涉及到了类型转换,Struts2内置了一套转换器机制,能够自动处理基本类型和一些常见类型的转换。然而,对于如Date这样的复杂类型,需要自定义转换器来处理。 创建自定义类型转换器的步骤如下: 1. **定义...

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...

    Struts2之类型转换器的使用案例struts002

    本案例"Struts2之类型转换器的使用案例struts002"深入探讨了如何自定义类型转换器以及在实际应用中的使用。 首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String...

    浅谈struts2安全

    3. **类型转换漏洞**:Struts2的OGNL(Object-Graph Navigation Language)表达式语言允许动态类型转换,这可能导致类型转换攻击。如果不正确地处理用户输入,攻击者可能利用此特性执行非法操作或获取敏感信息。 4....

    深入浅出Struts2.pdf

    Struts2的核心特性之一,拦截器允许在Action执行前后插入额外的功能,如日志记录、事务管理、权限控制等。常见的拦截器包括: - **PrepareInterceptor**: 初始化Action属性。 - **ExceptionInterceptor**: 处理未...

    Struts处理类型转换错误,如时间转换

    通过以上步骤,你可以在Struts2应用中有效地处理类型转换错误,尤其是时间转换错误,提高用户体验,并防止因为这类错误导致的程序崩溃。这需要对Struts2的配置、拦截器机制以及异常处理有深入理解。

    struts2数据类型转换

    ### Struts2 数据类型转换详解 #### 一、引言 在Web开发中,特别是使用Struts2框架进行开发时,数据类型转换是一项至关重要的功能。由于Web应用程序的基础通信协议HTTP仅支持字符串形式的数据传输,因此,服务器端...

    Struts自定义类型转换器

    ### Struts自定义类型转换器 #### 一、概述 在Web开发中,表单提交的数据通常是字符串形式的,而在业务逻辑处理时往往需要将这些数据转换为其他类型的对象(如日期、数字等)。Struts框架为了更好地处理这种类型...

    struts2.1数据类型转换2

    struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2struts2.1数据类型转换2

Global site tag (gtag.js) - Google Analytics