zoukankan      html  css  js  c++  java
  • Struts ActionForm简单理解

    要想明确struts的控制流程以及它核心API的实现原理(比方 Action/DispatchAction/ActionForm的实现原理),玩转struts1.2的关键就是可以玩转 ActionForm。

    ActionForm的应用
    1、——ActionForm的特性
    1.创建一个form类必须继承于四个父类中的一个,比方ActionForm、ValidatorForm。
    2.一个form类中的每个属性都将和页面中form表单中的每个表单元素一一相应
    Example:
    一个表单为:
    <form>
     <input type="text" name="username"></input>
     <input type="password"name="password"></input>
     <input type="text" name="email"></input> 
    </form>
    一个与之相应的form类
    public class UserForm extends ActionForm{
      private String username;
      private String password;
      private String email;
      private String address;
      
      //以下省略getter和setter方法
    }
    一个引用了该form类的appAction:
    <form-beans>
     <form-bean name="userForm"type="form.UserForm"></form-bean>
    </form-beans>
    <action-mappings>
    <action path="/test" type="action.TestAction"name="userForm" attribute="uf" scope="request"></action>
    </action-mappings>
    3.在引用了form-bean的action中name属性的值就是form-bean中name的值
    4.这个userForm默认会被放在session中,使用scope能够指定存储该form对象的地方

    2、——普通HTML表单使用Form的工作原理
    ActionServlet 对struts-config进行解析时,当解析到某个action中存在一个属性name,那么ActionServlet中的 RequestProcessor就会依据该name的值找到相应的form-bean然后创建一个相应的form类实例,放在我们定义的存储范围中,当表单提交到action相应的appAction之前也就是到达FC的时候,FC会做下面事情:
    1.依据路径找到相应的内存中存放着的配置对象中的action
    2.依据action中的attribute属性,从session中得到一个相应的form实例
    3.该form实例调用reset方法对自己进行清空
    4.用表单中的值去填充该form实例

    3、——Form与实体对象之间的关系
    有的时候我们为了方便会把取到的form中的值直接复制到实体对象中去然后把实体对象再存储到数据库中,这样给我们的编程带来了非常多的方便,但前提是实体对象中须要拷贝的属性,form中要拷贝过去的属性,与form相应的表单元素他们三者必须一一 相应.这样我们就能够把表单中的值得到封装到form中然后再把form中与实体对象中属性同样的值复制到实体对象中。
    Example:
    entity:
    public class User{
     private String name;
     private String password;
     private double salary;
     private String address;
     //省略getter和setter方法
    }
    form:
    public class UserForm{
     private String name;
     private String password;
     private String salary;
     //省略getter和setter方法
    }
    表单:
    <form>
     <input type="text" name="name"></input>
     <input type="password"name="password"></input>
     <input type="text" name="salary"></input>
    </form>
    1.把表单中的值赋值给UserForm
    2.把UserForm中的值复制到User对象中:
    //以下这条语句是在action的某个方法中做的所以form直接能够用
    BeanUtils.copyProperties(user,form);
    3.将user对象存放在数据库中

  • 相关阅读:
    关于W3Cschool定义的设计模式--常用的9种设计模式的介绍
    正则得介绍和使用——表单验证
    DOM的高级操作-一种JS控制元素的视觉假象
    如何理解JS中this指向的问题
    Vulkan中的实时软阴影与硬件优化
    TensorFlow Distribution(分布式中的数据读取和训练)
    TensorFlow白皮书
    TensorFlow Data模块
    新闻标签提取的评价方法
    基于TF-IDF的新闻标签提取
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3961349.html
Copyright © 2011-2022 走看看