`
jayung
  • 浏览: 58928 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2的三种传值方式比较(附demo)

阅读更多

1. 属性驱动

     一般在初学struts2时,都是从属性驱动开始的。

属性驱动是指在Action类里,包含表单里对应的字段(字段名一致)和对应的setter、getter。

表单:

username: <input type="text" name="username" /><br/>
password: <input type="text" name="password" /><br/>

 对应的Action:LoginAction:

private String username;
private String password;
// getter、setter
public String execute() {
// dosomething();
}

Action页面则可以通过${username}来访问username属性。 

属性驱动对于表单域比较少的传值还好,如果表单域较多,那Action类就会包含大量的属性和getter/setter方法,就会显得臃肿。

 

2. 对象驱动

好象没有比较正式的名称,暂且叫对象驱动吧。

Action类里包含一个对象和getter、setter,此对象的属性与表单的域一一对应:

 

	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String execute() throws Exception {
             // dosomething();
	}
 表单代码:

 

username: <input type="text" name="user.username" /><br/>
password: <input type="text" name="user.password" /><br/>

 表单域的name由对象名和属性名组成,中间用.连接,Action对象被创建后,通过setter进行赋值。Action result页面则通过${user.username}来访问。

 

3. 模型驱动

模型驱动是通过实现ModelDriven<T>的getModel()接口来传值的。

Action对象里包含一个带有getter\setter的对象,和一个getModel()方法,返回类型即是表单对应的类,返回类型即是创建的对象。

public class Login3Action implements ModelDriven<User> {
	private User user = new User();
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public User getModel() {
		return user;
	}
        public String execute() {
           // ...
        }
}

表单html代码与属性驱动一样,result返回页取对象的值通过类似于${user.username}来实现。

 

4. 对象驱动与模型驱动的比较

 

在大部分情况下,使用对象驱动或模型驱动,因为能达到dto的复用,且Action类的代码也看起来比较整洁。

对象驱动优点: 无需在Action类里创建对象,支持一个表单含有多个对象的属性。

缺点: 表单域的name变长了

 

模型驱动优点: 使表单看起来整洁

缺点: 不支持一个Action类里多个模型驱动传值。

分享到:
评论
1 楼 lieying1941 2014-03-20  
very good ,thank you !

相关推荐

    struts2-传值方式

    struts2前后台传值交互的理解

    struts2配置文件传值中文乱码

    struts2配置文件传值中文乱码

    ajax请求传值Struts2+jsp

    ajax请求传值Struts2(版本2.3.24.1)+jsp

    struts 2中文汉字传值

    struts2 超级链接中传递中文到Action,不能正常传递,经过两次转换,顺利实现对中文文档的读取。

    Struts2 demo2

    Struts demo2

    struts2使用域模型传值

    struts2使用域模型传值,如何在struts2中使用与模型传值

    Struts2Demo2

    Struts2Demo2

    struts2 ,struts2 demo

    struts2 ,struts2 demo,源代码示例

    struts2传值

    传值问题 在其中取值的方法有两种: #+映射名, 直接写映射名。 1.不加#的方式获取(所有对象放置在栈顶): a.XXaction中有该字段的成员变量. b.XXaction中该对象返回个给实现对象ModelDriven的泛型, 即action中下面...

    Struts2小demo

    自己动手做的Struts2小demo,开启SSH之路,你也动手开始吧

    struts2 Demo

    这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及struts2前台后后台的数据交互方式的解释,代码中有完整的注释帮助理解struts2的基本流程,同时对jstl和struts2的标签也有一定...

    Struts2示例demo

    Struts示例demo

    struts2-demo

    搭建一个简单的struts2开发环境 开发Struts2应用最少需要的JAR: a. struts2-core-2.x.x.jar : Struts2 框架的核心类库 b. xwork-core-2.x.x.jar: XWork类库,Struts2在其上构建 c. ognl-2.6.x.jar: 对象图导航...

    struts2入门demo

    改struts2入门案例是我本人自己写的入门小案例,可以使用。适合刚接触或者准备学习struts2的同事拿来看看

    struts2 sping3 mybatis框架样例DEMO

    struts2 sping3 mybatis框架样例DEMO

    struts2注解与拦截器demo

    该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。

    Struts2登录DEMO

    一个简单的Struts2登录DEMO,供大家参考,相互学习学习

    Struts2入门demo

    Struts2入门demo 希望对初学者有用!!!

Global site tag (gtag.js) - Google Analytics