Struts2属性驱动与模型驱动

原文地址:http://blog.csdn.net/wuwenxiang91322/article/details/11660207

为什么要使用属性驱动和模型驱动

struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和HttpServletResponse方法在获取客户端提交的数据信息的时候需要使用HttpServletRequest的getParameter()方法,并且还需要进行必要的数据类型转换。如何客户端提交的数据量大的时候,我们则需要写很多的getParameter方法。这样代码量就相应的增加不少。但是struts2为我们提供了属性驱动和模型驱动,它不需要我们写很多的获取值的方法。而只需要我们在Action中定义相应的getter方法,在界面上以Action中的变量名作为表单元素的name属性值即可。

二、属性驱动和模型驱动有什么异同?

1.属性驱动

对于属性驱动,我们需要在Action中定义与表单元素对应的所有的属性,因而在Action中会出现很多的getter和setter方法

2.模型驱动

对于模型驱动,使用的Action对象需要实现ModelDriven接口并给定所需要的类型.而在Action中我们只需要定义一个封装所有数据信息的javabean

3.属性和模型驱动的相同点

当我们使用属性驱动和模型驱动的时候,必须将表单的元素中的name属性值与我们定义接收数据信息的变量名对应起来。

模型驱动具体实例

模型驱动,与之前的属性驱动区别在于把所有的属性封装在一个JavaBean(模型)中,当用户提交数据时,自动调用模型属性的setter方法设置属性值,缺点在于没有属性驱动灵活。
User.java(模型):

package com.bean;

public class User {
    private 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() {
        // TODO Auto-generated method stub
        return this.username+" "+this.password;
    }
}

Action除了继承ActionSupport还要实现ModelDriven接口,该接口定义了一个getModel()方法,返回经过赋值的模型实例:

package com.struts2;

import com.bean.User;
import com.impl.LoginServiceImpl;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.service.LoginService;

public class LoginAction extends ActionSupport implements ModelDriven<User> {

    public User user=new User();
    private LoginService loginService=new LoginServiceImpl();
    //LoginService是登录的
    /**
     * getModel方法自动将提交的数据给user属性赋值
     */
    @Override
    public User getModel() {
        // TODO Auto-generated method stub
        return user;
    }

    public String execute() throws Exception
    {
        if(loginService.isLogin(user))
        {
            return SUCCESS;
        }
        this.addActionError("用户名或密码错误");
        return INPUT;
    }
}
时间: 2024-12-28 02:36:31

Struts2属性驱动与模型驱动的相关文章

Struts2 属性驱动、模型驱动、异常机制

模型驱动使用单独的VO(值对象)来封装请求参数和处理结果,属性驱动则使用Action实例来封装请求参数和处理结果. 一.使用模型驱动 1.login.action采用模型驱动模式实现,采用模型驱动时必须提供对应的模型,该模型就是一个普通的javabean. UserBean.java 1: package cc.openhome; 2: public class UserBean { 3: private String username; 4: private String password;

Struts2的属性驱动与模型驱动的区别

一.为什么要使用属性驱动和模型驱动? struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和 HttpServletResponse方法在获取客户端提交的数据信息的时候需要使用HttpServletRequest.getParameter()方法,并且还需要进行必要的数据类型转换.如何客户端提交的数据量大的时候,我们则需要写很多的getParameter方法.这样代码量就相应的增加不少.但是struts2为我们提供了属性驱动和模

Struts2中属性驱动与模型驱动

属性驱动: LoginAction.java: public class LoginAction extends ActionSupport implements ModelDriven<User>{ private User mdoel = new User(); @Override public User getModel() { // TODO Auto-generated method stub return this.mdoel; } public String login(){ S

struts2中的属性驱动和模型驱动

1.Struts2的属性驱动. Struts2的属性驱动指的是在action中JSP页面的每一个form中的name都对应在action中有一个属性与之对应.看下面代码片段: <form action="register.do" name="RegisterForm" method="post"> Username:<input type="text" name="uname">&l

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

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

Struts2(四)属性驱动和模型驱动

一.概述 所谓模型驱动,就是使用单独的JavaBean实例贯穿整个MVC流程,与之相对应的属性驱动方式,则使用属性作为贯穿MVC流程的信息携带者.属性无法独立存下,它必须依附于一个对象,这个对象就是Action实例.简单来说,模型驱动使用单独的值对象来封装请求参数和处理结果,属性驱动则使用Action实例来封装请求参数和处理结果. 二.应用实例 以前文提到的LoginAction为例,在属性驱动中的action为: public class LoginAction extends ActionS

2015年传智播客JavaEE 第168期就业班视频教程16-框架结构测试(加载全spring配置文件)+struts2属性驱动测试

模块的规范化我们已经做完了,下面我们要做我们的功能了. 如果是模型驱动就是name="对应model的name" 如果用属性驱动的话,必须得把表现层(Action类)的用于封装对象的模型属性的变量名给带上 课改在提,以后再讲.

属性驱动 and 模型驱动

//1.创建一个UserBean public class User { private String username; private String pwd; public String getUsername() { return username; } public void setUsername(String username) { this.username = user name; } public String getPwd() { return pwd; } public v

属性驱动和模型驱动的简单了解

1)属性驱动:就是jsp表单中的name都和action当中的一一属性对应,这样在action当中就不用像servlet一样去通过String username=request.getParameter("name");去获取到表单中的信息,而是由struts自动去调用get方法,为属性注入值,这就是属性驱动. 2)模型驱动:就是把jsp里面的数据先封装到一个javabean中,然后再在action中去调用这个javabean去得到数据. 模型驱动的条件: (1)模型驱动的Action