首页 > 代码库 > struts封装客户端数据到Action

struts封装客户端数据到Action

1.在Action中定义简单数据类型的属性

给Action定义简单类型的属性,封装客户端请求的数据

简单类型:String,基本类型和对应的引用类型

只要保证客户端请求的参数名称和Action的属性名称一样。

 

2.在Action中定义javabean对象封装客户端数据

2.1定义实体类

public class Users

{ 

    private String uname;

    private String upwd;

    private Integer type;

    public String getUname()

 {

        return uname;

    }

    public void setUname(String uname)

 {

        this.uname = uname;

    }

    public String getUpwd()

 {

        return upwd;

    }

    public void setUpwd(String upwd)

  {

        this.upwd = upwd;

    }

    public Integer getType()

 { 

        return type;

    }

    public void setType(Integer type)

 {

        this.type = type;

    }

}

2.2定义Action

Action中定义Javabean对象,作为属性

public class UserAction2

{

    /***

     * 使用javabean对象作为Action的属性,封装客户端请求的数据

     *

     * 如果Users类中存在一个属性为Score类型,Score类中存在一个属性Integer类型num

     * 参数名称怎么写?user.score.num(属性链),struts2框架会自动的属性链上的每一个

     * javabean类型进行实例化(ognl

     * **/

    private Users user; 

    public Users getUser()

 {

        return user;

    }

    public void setUser(Users user)

 {

        this.user = user;

    }

    public String userReg2()

 {   

        System.out.println(user.getUname()+"  ===  "+user.getUpwd()+" === "+user.getType());  

        return Action.SUCCESS;

    }

}

 

2.3注册Action

2.4定义UI页面

<!-- 使用javabean作为Action的属性 -->

     <form action="userAction2_userReg2.action" method="post">

    <div>uname:<input type="text" name="user.uname"/></div>

    <div>upwd :<input type="text" name="user.upwd "/></div>

    <div>type :

         <select name="user.type">

             <option value=http://www.mamicode.com/"1">管理员</option>

             <option value=http://www.mamicode.com/"2">用户</option>

         </select>

    </div>

    <div> <input type="submit" value=http://www.mamicode.com/"注册"/></div>

    </form>

 

 

总结:struts2框架会自动的获得客户端请求的参数,自动的类型转化,自动的封装为需要业务对象。

 

3 实现接口ModelDriven

ModelDriven:接口使用ognl表达式完成对象执行的封装,而getModel方法的返回值是被默认访问的对象。

3.1定义Action 

public class UserAction3 implements ModelDriven<Users>

{ 

    //定义Action的属性,同时进行实例化

    private Users user=new Users();

    /**

     * 该方法会将客户端请求的参数,封装到users对象中,将users对象放入

     * Action的值栈中.(ongl)

     *

     * 如果实现ModelDriven接口,

     * 请求参数会被默认封装带getModel方法的返回值对象中

     * 当获取需要的执行的是,默认由getModel方法的返回值对象中获得

     *

     * 好处:简化了参数的访问形式(客户端参数的命名,el表示的形式进行简化)

* ***/

    @Override

    public Users getModel()

 {

        System.out.println("---------------"+user);

        return user;

    }

    public String userReg3()

 {  

        System.out.println(user.getUname()+"  -------  "+user.getUpwd()+" ------- "+user.getType());

        return Action.SUCCESS;   

    }

}

 

3.2定义UI页面

<!-- 通过实现ModelDirven接口,封装客户端数据 -->

    <form action="userAction3_userReg3.action" method="post">

    <div>uname:<input type="text" name="uname"/></div>

    <div>upwd :<input type="text" name="upwd"/></div>

    <div>type :

         <select name="type">

             <option value=http://www.mamicode.com/"1">管理员</option>

             <option value=http://www.mamicode.com/"2">用户</option>           

         </select>

    </div>

    <div> <input type="submit" value=http://www.mamicode.com/"注册"/></div>

    </form>

 

 

 

struts封装客户端数据到Action