`

Struts1.X 源码分析之ActionForm赋值原理

阅读更多
struts1在处理请求参数之前,首先会根据配置文件action节点的name属性创建对应的ActionForm。如果配置了name属性,却找不到对应的ActionForm类也不会报错,只是不会处理本次请求的请求参数。

如果找到了对应的ActionForm类,则先判断是否已经存在ActionForm的实例,如果不存在则创建实例,并将其存放在对应的作用域中。作用域由配置文件action节点的scope属性来指定,其值可以为request或session(存储在作用域中的属性名由action节点配置的attribute属性指定,如果没有该属性,则由name属性指定)。其部分源代码如下:

 //ClassName:org.apache.struts.action.RequestProcessor

 protected ActionForm processActionForm(HttpServletRequest request,
        HttpServletResponse response, ActionMapping mapping) {
        // Create (if necessary) a form bean to use
        ActionForm instance =
            RequestUtils.createActionForm(request, mapping, moduleConfig, servlet);

        if (instance == null) {
            return (null);
        }

        // Store the new instance in the appropriate scope
        if (log.isDebugEnabled()) {
            log.debug(" Storing ActionForm bean instance in scope '"
                + mapping.getScope() + "' under attribute key '"
                + mapping.getAttribute() + "'");
        }

        if ("request".equals(mapping.getScope())) {
            request.setAttribute(mapping.getAttribute(), instance);
        } else {
            HttpSession session = request.getSession();

            session.setAttribute(mapping.getAttribute(), instance);
        }

        return (instance);
    }

接着,struts1开始处理request请求参数,并将其放置在一个HashMap中,最后调用
//bean为ActionForm实例
//properties为存放请求参数的HashMap
BeanUtils.populate(bean, properties);

将请求参数中对应参数的值赋给ActionForm中对应的属性名,并且支持嵌套属性赋值。例如名为user.name的参数值,BeanUtils将会赋值给ActionForm中属性名为user的对象的name属性。
分享到:
评论

相关推荐

    struts1.x和struts2.x区别

    Struts1.x的验证机制基于ActionForm,利用Commons Validator等库进行数据校验,而Struts2.x则采用了更为强大的验证框架,如XWork Validator,支持链式验证和更复杂的验证规则,使得数据验证更加全面和细致。...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    11. **生命周期管理**:Struts1.x对ActionForm对象的生命周期进行了管理,包括初始化、清理、创建和销毁等步骤,确保了内存的合理使用。 学习Struts1.x需要理解其设计理念,掌握配置文件的编写,熟练运用Action、...

    Struts1.x系列教程(网摘-全)

    3. **配置文件**:主要包括struts-config.xml,这是Struts1.x的主配置文件,用于定义Action、ActionForm、ActionMapping等组件。在这里,你可以配置URL与Action类的映射,设置数据验证规则等。 4. **ActionForm**:...

    struts1.x apps 所有最新的Struts1.x项目应用

    Struts1.x是一款经典的Java Web框架,由Apache软件基金会开发并维护。它是MVC(Model-View-Controller)设计模式的实现,极大地简化了Java Web应用程序的开发过程。本资源集合包含了所有最新的Struts1.x项目应用,为...

    Struts1.x的登录示例

    通过这个简单的Struts1.x登录示例,你可以了解Struts1.x的MVC工作流程、配置文件的编写以及Action和ActionForm的使用。然而,需要注意的是,Struts1.x已经较为过时,现代的Web开发更多地转向了Spring MVC、Play ...

    java Struts 1.x 框架 Web 开发

    Struts 1.x 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,由 Apache 软件基金会开发并维护。它在20世纪末到21世纪初广泛应用于企业级Web应用开发,因其强大的功能和良好的社区支持而受到...

    Struts1.x_Project.zip

    通过分析这个Struts1.x_Project,我们可以学习到如何配置Struts框架,理解ActionForm、Action、Struts-config.xml的作用,以及如何实现I18N和表单验证。同时,项目的数据库操作部分也是Java Web开发中重要的实践环节...

    struts1.x入门教程

    在学习Struts1.x的过程中,理解MVC模式以及ActionForm和Action的作用至关重要。此外,熟练掌握配置文件的编写,能让你更有效地组织和控制应用的流程。随着对框架的深入理解和实践,你将能够构建出更加复杂和功能丰富...

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...

    搭建struts1.x的jar包

    Struts 1.x 是一个经典的Java Web开发框架,由Apache软件基金会开发,它极大地简化了MVC(模型-视图-控制器)架构的实现。如果你正在寻找如何搭建Struts 1.x的开发环境,以下是一些关键的知识点,以及这些指定的jar...

    Struts1.x.rar

    这个名为"Struts1.x.rar"的压缩包文件,结合其描述"Struts1.x.rar购物网和所需的包.rar,对初学者有帮助",暗示其中包含了构建一个基于Struts1.x的购物网站的相关资源和依赖库。在学习和使用Struts1.x框架构建电子...

    Struts1.x 中文帮助文档

    尽管现在Struts2已经成为主流,但Struts1.x的原理和知识仍然对理解Web应用开发有重要意义。 Struts1.x的核心概念包括: 1. **ActionServlet**:这是Struts框架的心脏,负责处理所有的HTTP请求。它根据配置文件中的...

    Struts1.x入门与提高系列教程.pdf

    本教程将详细介绍Struts 1.x的基本原理和使用方法,让读者可以快速入门并提高对Struts 1.x框架的应用能力。同时,教程中也会涉及与Struts 2.x的比较,帮助开发者理解两个版本之间的相似之处和差异。 ### Struts 1.x...

    Struts1.x_action

    总的来说,Struts1.x_action这个资源包可能包含了一些预配置的Action类、ActionForm类、配置文件示例以及相关的JSP页面,帮助开发者快速搭建一个基于Struts1.x的Web应用。使用这个包,开发者可以直接导入项目,然后...

    struts1.x入门

    这个例子虽然简单,但涵盖了 Struts 1.x 开发的基本流程,包括环境搭建、ActionForm 和 Action 类的编写以及配置文件的设置。接下来,你可以继续探索更多关于 Struts 的高级特性,如拦截器、国际化支持等,以进一步...

    Struts1.x-Jdbc,学习Struts1.的曾删改查

    Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts1.x中,JDBC(Java Database Connectivity)是常用于与数据库交互的技术,它允许开发者通过Java代码来执行SQL语句,...

    Struts1.x-Hibernate,曾删改查

    要掌握Struts1.x和Hibernate,开发者需要理解MVC模式、Servlet和JSP的基础,以及数据库原理。同时,深入学习Struts1.x的生命周期、Action和ActionForm的使用,以及Hibernate的对象映射、查询语言(HQL)和事务管理,...

    struts1.x 常用知识详解

    3. **配置文件**:`struts-config.xml`是Struts1.x的核心配置文件,用于定义Action、ActionForm、ActionForward等元素,以及数据源和国际化资源等。 二、ActionForm与数据绑定 1. **ActionForm**:ActionForm对象...

    搭建struts1.x环境例子源码

    本例子源码旨在帮助初学者理解并搭建Struts1.x的开发环境。 在开始搭建环境之前,首先需要了解Struts1.x的基本构成。Struts1.x框架的核心组件包括ActionServlet、ActionForm、Action、Tiles等。ActionServlet是入口...

Global site tag (gtag.js) - Google Analytics