`
mozhenghua
  • 浏览: 325244 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用xwork封装request parameter

 
阅读更多

    熟悉ssh框架的朋友在使用struts2作为mvc框架时候,会在action类上设置成员属性对应页面上提交的参数,当程序启动的时候struts2会将request中的parameter通过反射的机制自动设置到action上。struts框架会负参数责转型等问题的处理,这样一来可以大大减少web开发过程中的重复劳动,大大降低出错的概率。

 

    如果能将该机制底层的实现流程搞清楚,将来可以将这个功能模块移植到其他框架中,那无疑会提升整体代码的优雅性。

 

 

import java.lang.reflect.Field;
import ognl.OgnlRuntime;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ognl.OgnlValueStackFactory;
import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor;
import com.opensymphony.xwork2.util.CompoundRoot;
import com.opensymphony.xwork2.util.ValueStack;

/**
 * Base Action class for the Tutorial package.
 */
public class ExampleSupport extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main(String[] arg) throws Exception {
		OgnlValueStackFactory factory = new OgnlValueStackFactory();
		factory.setXWorkConverter(new ExtendXWorkConverter());

		Field field = OgnlValueStackFactory.class
				.getDeclaredField("compoundRootAccessor");
		field.setAccessible(true);

		CompoundRootAccessor propertyAccessor = new CompoundRootAccessor();
		field.set(factory, propertyAccessor);

		factory.setContainer(new MockContainer());
		OgnlRuntime.setPropertyAccessor(CompoundRoot.class, propertyAccessor);

		ValueStack valueStack = factory.createValueStack();

		User user = new User();
		valueStack.push(user);
		valueStack.setValue("createTime", "2012-12-12 5/24/33");
		valueStack.setValue("name", "baisui");
		valueStack.setValue("age", "11");
		valueStack.setValue("gender", "true");
		valueStack.setValue("department", new String[] { "office" });

		System.out.println(user.getName());
		System.out.println(user.getAge());
		System.out.println(user.getDepartment());
		System.out.println(user.getGender());
		System.out.println(user.getCreateTime());

	}
}
 

 

public class User {
	private String name;
	private Integer age;
        private Date createTime;

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	private String[] department;

	private Boolean gender;

	public String[] getDepartment() {
		return department;
	}

	public void setDepartment(String[] department) {
		this.department = department;
	}

	public Boolean getGender() {
		return gender;
	}

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

	public String getName() {
		return name;
	}

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

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
}
分享到:
评论

相关推荐

    xwork-2.1.5-all.rar_xwork_xwork-2.1.5_xwork-2.1.5.jar_xwork-core

    《XWork 2.1.5:Web框架的核心组件与应用》 XWork是一个Java Web开发中的关键框架,它的核心在于提供了一套强大的动作处理...通过深入理解和掌握XWork,开发者可以更好地利用其特性,提升Web应用的开发效率和质量。

    xwork各版本的jar包

    xwork-1.1.1.jar, xwork-1.1.jar, xwork-1.2.1.jar, xwork-1.2.3.jar, xwork-2.0.0.jar, xwork-2.0.1.jar, xwork-2.0.3.jar, xwork-2.0.4.jar, xwork-2.0.5.jar, xwork-2.0.6.jar, xwork-2.0.7.jar, xwork-2.1.0.jar...

    JavaEE源代码 xwork-2.0.4

    JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源...

    xwork

    标题 "xwork" 暗示我们关注的是一个与软件框架或库相关的概念,特别是它在Java企业级开发中的应用。XWork是一个历史悠久的开源项目,它是Struts 1框架的核心部分,负责处理Action的执行逻辑。Struts是Apache软件基金...

    xwork官网源码 下载 xwork

    《深入理解XWork框架:官方源码解析》 XWork是一个强大的Action框架,它为Java Web应用程序提供了模型-视图-控制器(MVC)模式的支持。这个框架的主要目标是简化企业级应用的开发,提高代码的可维护性和可扩展性。...

    xwork源码及文档

    在实际开发中,利用XWork进行项目构建,可以提高开发效率,降低维护成本。通过对源码的学习,我们可以更有效地定位和解决问题,同时也可以为自己的项目贡献代码,参与到开源社区的发展中去。 总之,XWork作为Struts...

    xwork-2.0.7jar

    通过深入学习其源码,开发者不仅可以提升技能,也能更好地利用xwork解决实际问题,为项目带来更高的质量和效率。对于有志于深入研究Web应用开发的程序员来说,xwork-2.0.7无疑是一份宝贵的资源。

    xwork源文件及文档

    通过学习这些文档,开发者可以更好地理解XWork的工作原理,从而更有效地利用Struts2框架构建高质量的Java Web应用程序。 **四、实际应用场景** XWork在实际开发中的应用广泛,如: 1. **企业级应用**:大型企业...

    xwork-2.0.4 源码

    xwork对异常处理进行了封装,当Action执行过程中抛出异常时,会根据配置的异常处理策略进行处理。此外,xwork支持国际化,可以方便地切换不同语言环境,为用户提供多语言支持。 七、总结 通过对xwork-2.0.4源码的...

    XWork源码+docs全

    通过分析和运行这个项目,开发者可以快速掌握如何在自己的项目中有效地利用XWork和Struts2。 在使用Eclipse或MyEclipse查看源码时,你可以: 1. 导入源码工程,这将帮助你理解代码结构和类之间的关系。 2. 使用IDE...

    xwork2源代码(整理)

    ActionContext管理了请求上下文中的所有信息,包括值栈、session、request和response等;ActionProxy是执行动作的代理,它负责创建并执行ActionInvocation;而ActionInvocation则是执行动作的实际载体,它封装了调用...

    xwork2.0.4源代码

    3. **ActionContext**:该类封装了当前请求的上下文信息,如参数、session、request和response对象等。它为Action提供了一个全局的访问环境。 4. **TypeConverter**:xwork提供了强大的类型转换机制,TypeConverter...

    xwork-2.0.5-src+xwork-2.0.5-jar.zip

    1. **设计理念**:XWork强调的是动作(Action)和业务逻辑的分离,通过Action来处理用户请求,而业务逻辑则被封装在服务层。这种设计使得代码更易于维护和测试。 2. **依赖注入(DI)**:XWork支持依赖注入,允许...

    xwork2.1.2源码与xwork2.2.1源码

    《深入解析xwork 2.x源码:从2.1.2到2.2.1的演进》 xwork作为一个强大的Action框架,是Struts2的核心组成部分,它提供了动作处理、类型转换、数据校验等功能,对于Java Web开发者而言,理解其源码有助于提升对MVC...

    xwork源代码,最新版本

    通过对XWork源代码的深入研究,我们可以更好地理解它的运行机制,从而在实际开发中更高效地利用这一工具。对于想要提升Java Web开发能力的开发者来说,熟悉并掌握XWork的源代码无疑是十分有益的。通过查看并分析源码...

    xwork-2.0.6-src

    本文将深入探讨xwork-2.0.6的源码,帮助开发者更好地理解和利用这个强大的框架。 首先,xwork-2.0.6-src中的dtd文件(Document Type Definition)是XML文档类型定义,它们定义了XML文档的结构和语法规则。例如,...

    xwork帮助文档

    通过这份“最新文档”,开发者不仅可以掌握XWork的基本使用,还能了解到最新的特性和改进,以便于在实际项目中更好地利用XWork构建高效、稳定的企业级应用。深入理解这些知识点,将有助于提升开发效率,降低维护成本...

    xwork源码(全)

    1. **ActionInvocation**:这是执行Action的核心接口,它封装了Action的执行过程,包括调用Action方法和执行拦截器链。 2. **InterceptorStack**:实现了拦截器链的管理,根据配置顺序依次调用每个拦截器。 3. **...

    Xwork完整源代码

    深入研究Xwork的源代码,我们可以学习到如何优雅地实现MVC架构,如何利用拦截器增强应用的灵活性,以及如何设计可扩展的框架。这对于提升Java Web开发技能,理解Struts2框架的工作方式,以及解决实际开发中的问题都...

    OpenSymphony公司的xwork资源包

    开发者可以利用这些资源快速理解和应用XWork,提升项目的开发效率。 总的来说,OpenSymphony公司的xWork资源包是Java开发者的得力助手,它通过提供强大的动作管理、类型转换、数据校验和结果映射等功能,帮助开发者...

Global site tag (gtag.js) - Google Analytics