struts2获取表单数据之 属性封装 模型驱动 表达式封装 对象封装到list集合 对象封装到map集合 五种方便的封装方式

一、属性封装

  属性封装是在action里面设定属性值,属性名字一定要和表单中的name一样,action中extends ActionSupport

  demo1.jsp:

  <body>
    This is my login JSP page. <br>
    <form action="demo1.action" method="post" >
    username<input type="text" name="username"><br><!-- name和属性名称一样 -->
    password<input type="text" name="password"><!-- name和属性名称一样 -->
    <input type="submit">
    </form>
  </body>

  action:

public class Damo1Action extends ActionSupport {
    private String username;//属性名称和表单name一样
    private String password;
    //一定要设置get set方法
    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;
    }
    public String demo1(){
        System.out.println(username+"\n"+password);//直接即可获取值
        return "go";
    }
}

  struts2相关配置:

        <package name="com.demo.test" extends="struts-default" namespace="/">
            <action name="demo1" method="demo1" class="com.demo.test.Damo1Action"><!-- 属性封装 -->
                <result name="go">/index.jsp</result>
            </action>
        </package>

================================================================================================================================================================

二、模型驱动封装

  直接将表单数据封装在javabean对象中

struts2的相关配置:

            <action name="demo2" method="demo2" class="com.demo.test.Damo2Action"><!-- 模型驱动封装 -->
                <result name="go">/index.jsp</result>
            </action>

user实体类,两个属性

/**
 * 用于demo2的user实体类
 * @author Administrator
 *
 */
public class User {
    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;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }

}

表单页面与demo1公用

action:

注意要实现接口ModelDriven

public class Damo2Action implements ModelDriven<User>{//实现接口ModelDriven 并且有个泛型,泛型是实体类对象
    private User user=new User();//new一个全局user对象
    @Override
    public User getModel() {//获得模型的方法,不需要调用
        // TODO Auto-generated method stub
        return user;//返回user对象
    }
    public String demo2(){
        System.out.println(user);//直接显示user
        return "go";
    }
}

================================================================================================================================================================

三、表达式封装

  表达式封装可以将一个表单内的数据封装到不同对象中

  jsp页面:

  <body>
    This is my login JSP page. <br>
    <form action="demo3.action" method="post" >
    username<input type="text" name="user.username"><br><!-- name中的user是实体类对象而不是类名 -->
    password<input type="text" name="user.password"><!-- 通过指向不同的实体类对象就可以将一个表单页面中的内容封装到多个对象中 -->
    <input type="submit">
    </form>
  </body>

action代码

声明user对象,写出对象的get  set 方法

public class Damo3Action extends ActionSupport{
    private User user;
    public User getUser(){
        return user;
    }
    public void setUser(User user){
        this.user=user;
    }
    public String demo3(){
        System.out.println(user);//直接显示user
        return "go";
    }
}

struts2中的配置

            <action name="demo3" method="demo3" class="com.demo.test.Damo3Action"><!-- 表达式封装 -->
                <result name="go">/index.jsp</result>
            </action>

======================================================================================================================================

四、表单数据封装到list

list可以将表单数据封装到多个同一实体类的不同对象中

jsp页面:

  <body>
    This is my login JSP page. <br>
    <form action="demo4.action" method="post" >
    username<input type="text" name="list[0].username"><br>
    password<input type="text" name="list[0].password"><!-- 表单输入的值就是list中第0个对象的password属性值 -->
    <input type="submit">
    </form>
  </body>

action:

list要声明get set集合

public class Damo4Action extends ActionSupport{
    List<User> list;

    public String demo4(){
        System.out.println(list.get(0).getUsername());//获取list集合中的第0个对象并且获得username
        System.out.println(list.get(0).getPassword());
        return "go";
    }
//    list集合的get set集合
    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }
}

struts2相关配置

            <action name="demo4" method="demo4" class="com.demo.test.Damo4Action"><!-- 表达式封装 -->
                <result name="go">/index.jsp</result>
            </action>

======================================================================================================================================================

五、数据对次昂封装到Map集合中

Map集合为键值对形式,使用key可以获得相应value

jsp页面

  <body>
    This is my login JSP page. <br>
    <form action="demo4.action" method="post" >
    username<input type="text" name="map[‘one‘].username"><br>
    password<input type="text" name="map[‘one‘].password"><!-- 表单输入的值就是map中key为one对象的password属性值 -->
    <input type="submit">
    </form>
  </body>

action:

public class Damo5Action extends ActionSupport{
    Map<String ,User> map;//声明map
    public String demo4(){
        System.out.println(map.get("one").getUsername());//获取map集合中key为one对象并且获得username
        System.out.println(map.get("one").getPassword());
        return "go";
    }
//    map集合的get set集合
    public Map<String, User> getMap() {
        return map;
    }
    public void setMap(Map<String, User> map) {
        this.map = map;
    }

}

struts2配置

            <action name="demo5" method="demo5" class="com.demo.test.Damo5Action"><!-- 表达式封装 -->
                <result name="go">/index.jsp</result>
            </action>

总结

以上总计五种方式,最常用的是第二种方式  模型驱动封装,可以直接获得实体类对象,注意name属性和属性名称一定要相同,否则不能传值,缺点是只能封装到一个实体类中,若要封装到两个实体类就要使用第三种方式

时间: 2024-10-07 21:46:23

struts2获取表单数据之 属性封装 模型驱动 表达式封装 对象封装到list集合 对象封装到map集合 五种方便的封装方式的相关文章

struts2入门之struts2获取表单数据

在上一篇博文中分享了action如何获取表单数据,在本篇博文中分享一下用struts2这个框架如何来获取表单数据. struts2获取表单数据可以分为三种方式: 1.属性封装 2.模型驱动封装 3.表达式封装 分别介绍以上三种方式: 属性封装的步骤:首先在action中定义成员变量,并写set方法(这里为了避免和后面的混淆,把get和set方法都写上得了),然后该action要访问的form表单中的属性值要和定义的成员变量名称一样,在action访问到jsp页面时,form表单中的数据都已经拿到

strus2中获取表单数据 两种方式 属性驱动 和模型驱动

strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值* 如果一个属性在对象栈,在页面上可以根据name属性进行回显*/ /** * 属性驱动实现的条件:* 1.当前请求的action在栈顶,所以action中的属性就暴漏出来了* 2.获取页面上表单的元素,整合成一个map * 3.调用setValue方法赋值*/ 1 package cn.itcast.struts2.sh; 2 3

struts2中获取表单数据的方式

在最近学习的struts2,struts2获取表单的方式主要有两种 一:属性驱动 属性驱动主要指的是通过字段进行数据的传输,其中包括两种情况 1:与基本数据类型的属性对应 2:直接使用域对象 二:模型驱动 在struts2中,Action处理请求的方式还有另外的一种方式,叫做模型驱动,通过实现ModelDriven接口来接收请求参数,Action类必须实现ModelDriven接口,并且重写getModel方法,这个方法返回的就是Action所使用的数据模型对象. 模型驱动的方式通过javabe

struts2 封装获取表单数据的方式

一.属性封装 1.在action中设置成员变量,变量名与表单中的name属性值相同 2.生成变量的set方法 实例 获取用户输入的用户名和密码 jsp页面 java代码 二.模型驱动(常用) 1.action实现 ModeDriven 接口 2.在action里创建实体类对象 3.实现接口的 getModel方法并返回所创建的对象 示例 获取用户输入的用户名和密码 jsp页面 java代码 需注意的是表单name的值应与类的属性名相同. 三.表达式封装 1.在 action 中声明实体类 2.生

struts2 获取表单数据封装到list和map集合

一.获取封装表单数据到list集合 示例 获取用户输入的用户名和密码并输出用户名. jsp页面 list[0]表示list中的第一个user对象 Java代码 二.封装表单数据到map集合 示例 获取用户输入的用户名和密码并输出用户名. jsp页面 'one'是map的key通过key来获取user对象 java代码

jquery获取表单数据无刷新提交

var fdata=$("form").serialize();  //获取表单的值   $.post("tiaozhuan.jsp", fdata, function (result) {//无刷新提交表单      alert(result);   })

服务器端获取表单数据的编码解码问题(servlet)

首先需要明确指出的是,这里的服务器是指tomcat. 在页面没有明确指定编码的情况下,客户端通过input标签和字符串向服务器传递两个值param1和param2.如果直接使用request.getParameter()方法来获取值的话,得到的肯定都是乱码,我们需要对其重新进行编码解码,就像下面的代码所示的那样: new String(req.getParameter("param1").getBytes("iso-8859-1"), "gbk"

不通过getElementByName实现获取表单数据 (document.form表单的name值.input输入框的name值)

function update() { //document.form表单的name值.input输入框的name值 var username = document.form1.username; var mobile = document.form1.mobile; var qq = document.form1.qq; } <form name="form1" method="post" action=""> <table

针对jquery获取表单数据并且迭代方式

function add(){ $("select option:selected").each(function(index){ var name = $(this).text(); console.log(name); }) $("select").each(function(index){ var namekey = $(this).val(); console.log(namekey); }) $("input[name='nodeForm.nam