Struts2 第8part 使用Domain Model(域模型)接收参数
2012-12-30 00:08
537 查看
2012年12月29日
Struts2 第8part 使用Domain Model(域模型)接收参数
上一part讲了使用action属性来接收参数,是一种普遍的方法。但如果参数多了,这种方法就不敢苟同了。这时候,使用域模型是比较方便的,在给出实例之前,解释一下什么是域模型吧。
域模型:所谓域模型就是在我们的实体域里面,真正存在的域的概念。
我在网上看到有大牛总结的比较好,我稍微改了一下内容。如果想看原文,点击下面链接:
http://blog.sina.com.cn/s/blog_5e2c3a010100pxk9.html
实例:Struts2_DomainModelParamInput
strut.xml配置文件
这个项目里,那部分是域模型?下面建立的模型类就是这里所说的域模型:User.java
建立完这个域模型,怎么利用它来接收参数呢?
我们来看看Action类:UserAction.java
如果像项目跟第7part那个项目 那样,如果在域模型里面有200多个属性,那么是不是要在UserAction类里面写200多个相应的属性,还要写相应的get,set呢?
这下子就可以领会到域模型的好处了吧。
五、这样,如果想给user的属性赋值,则在IE地址栏写:
http://localhost:8080/Struts2_DomainModelParamInput/user/user!add?user.name=a&user.age=8
就是user.name= user.age=
相当于调用了setUser.setName()。setUser.setAge().这就是用域模型直接接收这个参数。
但是域模型也有不适用的时候:如何是用户登录,希望有一个用户名,一个密码,一个确认密码。可是我们的用户域模型通常只有两个属性:用户名,密码。
那么用域模型就不可以了。那么如何解决这个问题呢?
1、答:可以直接用属性接收,如果喜欢用域模型,则再建立一个user。
2、除了上面方法外,,还有一种方式,就是再定义一个DTO(data transfer object)数据传输对象。,由这个对象,再生成域对象。
使用DTO来解决这个方法:
创建UserDTO.java
在UserAction类中用UserDTO属性
这样前台输入进来的参数,就与UserDTO相匹配了。
然后在UserAction里面处理完之后,再根据UserDTO ,生成User对象。
方法就是从UserDTO里面拿到相应的参数,添加到User里面。
UserDTO就是把参数传递过来,在new User时,再把参数传递给User对象。
那么什么时候用DTO对象呢?只能是当前台参数传递过来时,跟我们的域模型匹配不上。
这时有两种方式,一种方式是用属性接收过来,另外一种方式,就是用DTO对象。
index.jsp页面的代码:
本文出自 “一曲待续” 博客,请务必保留此出处http://wwj9520.blog.51cto.com/5769922/1104344
Struts2 第8part 使用Domain Model(域模型)接收参数
上一part讲了使用action属性来接收参数,是一种普遍的方法。但如果参数多了,这种方法就不敢苟同了。这时候,使用域模型是比较方便的,在给出实例之前,解释一下什么是域模型吧。
域模型:所谓域模型就是在我们的实体域里面,真正存在的域的概念。
我在网上看到有大牛总结的比较好,我稍微改了一下内容。如果想看原文,点击下面链接:
http://blog.sina.com.cn/s/blog_5e2c3a010100pxk9.html
实例:Struts2_DomainModelParamInput
strut.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="user" extends="struts-default" namespace="/user"> <action name="user" class="com.wwj.struts2.user.action.UserAction"> <result name="success">/user_add_success.jsp</result> </action> </package> </struts>
这个项目里,那部分是域模型?下面建立的模型类就是这里所说的域模型:User.java
package com.wwj.struts2.user.model; public class User { private String name; private int password; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPassword() { return password; } public void setPassword(int password) { this.password = password; } }
建立完这个域模型,怎么利用它来接收参数呢?
我们来看看Action类:UserAction.java
package com.wwj.struts2.user.action; import com.opensymphony.xwork2.ActionSupport; import com.wwj.struts2.user.model.User; public class UserAction extends ActionSupport { private User user; //private UserDTO userDTO; public String add() { System.out.println("name=" + user.getName()); System.out.println("age=" + user.getPassword()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
如果像项目跟第7part那个项目 那样,如果在域模型里面有200多个属性,那么是不是要在UserAction类里面写200多个相应的属性,还要写相应的get,set呢?
这下子就可以领会到域模型的好处了吧。
五、这样,如果想给user的属性赋值,则在IE地址栏写:
http://localhost:8080/Struts2_DomainModelParamInput/user/user!add?user.name=a&user.age=8
就是user.name= user.age=
相当于调用了setUser.setName()。setUser.setAge().这就是用域模型直接接收这个参数。
但是域模型也有不适用的时候:如何是用户登录,希望有一个用户名,一个密码,一个确认密码。可是我们的用户域模型通常只有两个属性:用户名,密码。
那么用域模型就不可以了。那么如何解决这个问题呢?
1、答:可以直接用属性接收,如果喜欢用域模型,则再建立一个user。
2、除了上面方法外,,还有一种方式,就是再定义一个DTO(data transfer object)数据传输对象。,由这个对象,再生成域对象。
使用DTO来解决这个方法:
创建UserDTO.java
package com.wwj.struts2.user.dto; public class UserDTO { private String name; private String password; private String confirmingPasswrod; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getConfirmingPasswrod() { return confirmingPasswrod; } public void setConfirmingPasswrod(String confirmingPasswrod) { this.confirmingPasswrod = confirmingPasswrod; } }
在UserAction类中用UserDTO属性
package com.wwj.struts2.user.action; import com.opensymphony.xwork2.ActionSupport; import com.wwj.struts2.user.model.User; public class UserAction extends ActionSupport { private User user; //private UserDTO userDTO; public String add() { System.out.println("name=" + user.getName()); System.out.println("age=" + user.getPassword()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
这样前台输入进来的参数,就与UserDTO相匹配了。
然后在UserAction里面处理完之后,再根据UserDTO ,生成User对象。
方法就是从UserDTO里面拿到相应的参数,添加到User里面。
UserDTO就是把参数传递过来,在new User时,再把参数传递给User对象。
那么什么时候用DTO对象呢?只能是当前台参数传递过来时,跟我们的域模型匹配不上。
这时有两种方式,一种方式是用属性接收过来,另外一种方式,就是用DTO对象。
index.jsp页面的代码:
<?xml version="1.0" encoding="GB18030" ?> <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <% String context = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> <title>Insert title here</title> </head> <body> 使用Domain Model接收参数 <a href="user/user!add?user.name=a&user.age=8">添加用户</a> <br /> </body> </html>
本文出自 “一曲待续” 博客,请务必保留此出处http://wwj9520.blog.51cto.com/5769922/1104344
相关文章推荐
- 关于在Struts2的Action中使用domain模型接收参数的问题
- Struts2--DomainModel接收参数---使用广泛!!!
- struts2使用DomainModel接收参数
- 关于在Struts2的Action中使用domain模型接收参数的问题
- Struts2学习之Action接收参数方法二(用DomainModel接收参数(模型驱动))
- 关于在Struts2的Action中使用domain模型接收参数的问题
- Struts2_0800_DomainModelParamInput 关于用类实现参数 使用Domain Model接收参数
- 关于在Struts2的Action中使用domain模型接收参数的问题
- 道听途说Struts2之8:使用DomainModel属性接收参数
- Struts2域模型(DomainModel)的使用
- Struts2_8_用DomainModel接收参数
- struts2用DomainModel接收参数
- Struts2参数的接收 使用DomainObject和ModelDriven
- Struts2中action接收参数的DomainModel、ModelDriven以及Preparable接口
- Struts2_08_利用DomainModel接收参数
- Struts2用DomainModel接收参数
- Struts2 用DomainModel接收参数
- 使用Domain Model接收参数添加用户
- 使用Struts2的模型驱动(ModelDriven)来接受参数发现取不到值---解决方法
- Struts2 DomainModel、ModelDriven接收参数