欢迎使用CSDN-markdown编辑器

本文简要介绍struts2中Action的两种驱动方式:属性驱动和模型驱动。

属性驱动
在Action中提供与表单字段一一对应的属性,并一一赋值。采用属性驱动的方式时,是由每个属性来承载表单的字段值
举个栗子:
通过页面取值,通过form表单获得相应的属性(用户信息)。
user.jsp中代码

    <form action="user/save" method="post">
        用户名:<input type="text" name="user.username"><br/>
        密码:<input type="password" name="user.pwd"><br/>
        真实姓名:<input type="text" name="user.realname"><br/>

        <input type="submit" value="保存">
        <input type="button" value="返回" onclick="history.go(-1)">
    </form>

struts.xml

        <action name="save" class="com.nic.control.HelloWorld" method="save">
            <!-- 返回页面,type:默认是dispatcher请求转发,重定向redirect -->
            <result name="success" type="redirect">/index.jsp</result>
            <result name="fail"  type="redirect">/index.jsp</result>
        </action>

HelloWorld.java类代码(用来测试,所以名字不够正经* 。*)

private Userbean user;
    public String save(){
        System.out.println("这是保存方法。。。");    
        System.out.println("username="+user.getUsername());
        System.out.println("realname="+user.getRealname());
        System.out.println("pwd="+user.getPwd());

        //封装到对象,调用业务逻辑层 保存到数据库
        return "success";
    }

Userbean类就不贴出来了,里面就是属性,get,set方法~~

那么在jsp页面输入的数据会在控制台输出。

可以直接在类中写form表单中的几个属性,那么form表单中直接写属性,不用加user. 。这里直接在类中用JavaBean的方式,写一个JavaBean,然后生成get,set方法。

模型驱动
表单字段自动被set到一个JavaBean中,由模型对象来承载所有的属性值,使用时必须单独提供一个JavaBean。
使用模型驱动需要实现ModelDriven接口。
user.jsp

  <body>
    <form action="mctype/saveAction" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="pwd"><br/>
        真实姓名:<input type="text" name="realname"><br/>

        <input type="submit" value="保存">
        <input type="button" value="返回" onclick="history.go(-1)">
    </form>  
public class UserAction implements ModelDriven<Userbean>{
    private Userbean user=new Userbean();

    public String save(){
        System.out.println("这是保存方法。。。");    
        System.out.println("username="+user.getUsername());
        System.out.println("realname="+user.getRealname());
        System.out.println("pwd="+user.getPwd());

        //封装到对象,调用业务逻辑层 保存到数据库
        return "success";
    }

        public Userbean getUser(){
        return user;
    }
    public void setUser(Userbean user){
        this.user=user;
    }

    public Userbean getModel(){
        return user;
    }
}

此时在form表单中,name直接写属性即可。
Action类的执行流程是:首先调用getModel()方法得到User对象,接着根据JavaBean的原则将客户端传过来的属性,一个一个的set到User对象的属性中,将属性全部set完之后,再执行execute()方法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值