`

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属性。
分享到:
评论

相关推荐

    POI导入导出EXCEL文件.(struts 1.x and struts2.x).doc

    struts1.x的例子,struts2.x可以参考自己修改 1.action的写法 import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet....

    struts1.x上传实例

    struts1.x上传实例 struts文件上传,struts upload组件文件上传 最基本的实例,将文件上传到应用服务器里 1.upload.jsp内容 <form action="fileup.do" method="post" enctype="multipart/form-data" > 文件:...

    struts1.x html标签 radio,checkbox,multibox,select的使用

    html:radio,html:checkbox,html:multibox,html:select 与actionform结合使用数组或集合,有多种实现方式

    org.apache.struts缺少所需包

    import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction等缺少

    Struts1.x.pdf

    :Struts提供了下面这些组件使用MVC开发应用程序: ·Model:Struts没有提供...·View:Struts提供了ActionForm创建Form Bean, 用于在controller和view间传输数据; 此外,Struts提供了自定义JSP标签库,辅助开发者用JSP

    Ajax+Struts1.x 登陆程序源代码(详解)

    struts的Action及ActionForm代码 实体类代码 业务类代码 Servlet与AJAX相关处理 字符编码Filter JDBC封装连接类 各个配置文件 各个JSP文件 ... 总之,就是整个AJAX+STRUTS项目登陆程序打包,可以在ECLIPSE下导入,在...

    Struts2教程

    Struts2 Struts2 Struts2 教程 1 1 1 :第一个 Struts2 Struts2 Struts2 程序 在本系列教程中我们将学习到 Struts2 的各种技术。在本教程中使用的工具和程序库的版本 如下: 开发工具: MyEclipse6 Web 服务器: ...

    Struts_开发的最佳实践

    应用程序的 ActionForm 扩展了 Struts 的 org.apache.struts.action.ActionForm 类。ActionForm 是一些封装和验证请求参数的简单 JavaBean。要验证请求数据,ActionForm 的 validate() 方法必须给出一个特定于该情况...

    struts1 tutorial

    6.Struts: Introducing the ActionForm 7.A better way to seperate Book and BookForm 8.Handling Invalid Entries 9.Recapitualation: Where we are 10.Using Logic 11.Templates 12.FAQ 13.Beans ...

    【项目实战案例】java校园订餐系统项目(web端)

    【项目实战案例】java校园订餐系统项目...import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.bean.HzpBean;

    struts 的jar包

    apache的struts 的jar包 ,J2EE框架开发愿意和大家分享。

    Struts_学习笔记之ActionForm

    Struts_学习笔记之ActionForm,简单配置即可达到效果

    struts1使用actionform实现表单验证

    struts1使用actionform实现表单验证,表单验证失败追加信息。

    Struts in Action中文版

    1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................

    Struts1教程帮助大家学习吧

    本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅《Struts 2系列教程》来比较Struts 1.x和Struts 2.x的相同点和不同点。 在这篇文章中将以一个简单的例子(mystruts)来演示如何使用MyEclipse来...

    Java Struts教程

    bean元素...............................................................Struts高级特性(Struts Advanced Feature).........................................................16 验证...........................

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

    struts 视频 struts视频 actionform

    struts 视频 struts视频 actionform

    Struts Hibernate Spring 集成开发宝典 actionform

    Struts Hibernate Spring 集成开发宝典 actionform 有研究或探讨或开源的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn

    [摘]Struts 学习笔记之ActionForm

    比上面的完整 博文链接:https://shangdiyefankun.iteye.com/blog/122443

Global site tag (gtag.js) - Google Analytics