一.属性驱动

       注:示例中的实体类没有相应展示出来

  1.基本数据类型的属性

        基本数据类型的属性指每一个前台提交的属性在后台对应的Action类中都有相应的属性与之相对应

       例如:前台表单:       

<form action="login" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>

              后台Action中设置对应参数:

       

public class UserAction extends ActionSupport{

	private static final long serialVersionUID = 1L;
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 execute() throws Exception {
User user=new User();
UserService userService=new UserService();
user.setUserName(userName);
user.setPassword(password);
if(userService.login(user)){
return SUCCESS;
}
else return ERROR;
}
}

这样前台的参数就能由strut2传到相应后台

  这种方式缺点:如果参数太多后台代码太繁琐

2.javabean属性

   相对基本数据类型而言,javabean的前台表单只需要在name前面加上对象点,例如user.name,user.password

   例如:

<form action="login" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="user.userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="user.password"></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>

    这样在后台只需要提供一个bean的生成方式:

    Action中:

    

public class UserAction2 extends ActionSupport{

	private static final long serialVersionUID = 1L;

	private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
UserService userService=new UserService();
if(userService.login(user)){
return SUCCESS;
}
else return ERROR;
}
}

只需写一个User对象,后台就能自动获取

 看法:代码比较简洁明了,可以传入多个javabean的对象,只是前台写的时候需要注意对象名+点,如:user.password

二.模型驱动

   模型驱动前面的表单属性就直接填name,但是要注意与实体中的属性相对应

<form action="login" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>

  后台的Action中必须继承ModelDriver<T>,T填具体的bean

 

public class UserAction3 extends ActionSupport implements ModelDriven<User>{

	private static final long serialVersionUID = 1L;

	private User user=new User();	

	@Override
public String execute() throws Exception {
UserService userService=new UserService();
if(userService.login(user)){
return SUCCESS;
}
else return ERROR;
}
@Override
public User getModel() {
return user;
}
}

注意:这种模型驱动方式不会自动给你实例化bean,需要自己创建new  User();不然会报空指针异常

  观点: 模型驱动方式代码简介,前台也不用像javabean方式那样

      但是当前台传入不是单个bean的时候,不适合用模型驱动,

      因为必须继承ModelDriver<T>,泛型只有一种类型

    

    

struts Action设置数据的方法的更多相关文章

  1. Struts2,get/set 自动获取/设置数据ActionSupport 类

    主页:http://struts.apache.org/在用户请求和模块化处理方面以及页面的展现这块,Struts2 发挥了强大的作用:相对于传统的Jsp+Servlet 模式,Struts2 更适合 ...

  2. Loadrunner Vugen参数列表中数据分配方法及更新值的时间9种组合说明及验证

    作为刚开始学习Loadrunner的新人,Data Assignment Method以及Update Method在相互组合之后,LR如何进行取值让我很是头疼. 于是花了一个晚上的时间认真学习官方文 ...

  3. struts2:数据校验,通过Action中的validate()方法实现校验,图解

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种 Struts2中提供了一个com.opensymphony.xwork2.Valid ...

  4. struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)

    前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...

  5. 第五课 Struts的控制器【续】Action类的execute()方法

    1.Action类的execute()方法: public ActionForward execute(ActionMapping mapping,                           ...

  6. jQuery中设置form表单中action的值的方法

    下面介绍在jQuery中设置form表单中action的值的方法. $("#myFormId").attr("action", "userinfo.s ...

  7. android之保存偏好设置信息到shareSharedPreferences,轻量级的保存数据的方法

    android之保存偏好设置信息到shareSharedPreferences,轻量级的保存数据的方法   SharedPreferences保存数据到xml文件 有时候要保存activity的某些状 ...

  8. 【转】Caused by: Action class [com.struts.action.xxxAction] not found 解决方法

    刚学习Struts,自己写了个简单程序,一启动tomcat就报错,但是我按着ctrl点击struts.xml中com.struts.action.LoginAction也能定位到LoginAction ...

  9. valuestack,stackContext,ActionContext.之间的关系以及action的数据在页面中取得的方法

     转自:http://blog.csdn.net/quechao123/article/details/4406148 1.三者之间的关系如下图所示: 2.action的数据在页面中取得的方法 在st ...

随机推荐

  1. microcks 微服务mocks 工具&&运行时

    microcks 是一个方便的微服务mock 工具,我们可以用来mock request.response,同时获取api 的服务契约,microcks 支持的部署模式也比较多,docker-comp ...

  2. 預約申領往來港澳通行證及簽注x

    http://www.ctshk.com/passport/talent_bookrep.htm 換領往來港澳通行證和申請簽注延期須知 為方便持<往來港澳通行證>以內地逗留簽注在香港工作. ...

  3. ElasticSearch(三)不仅仅是查询

    二次评分 查询出来结果后,进行二次评分: 但是其实每个文档查询出来的结果是两次查询的分数之和,这个其实并不是很能讲的清楚: 多匹配控制 多匹配是指multi-match,控制则是指一下的几种控制方式: ...

  4. java中==与equals

    == ==可用于比较基本类型与引用类型,对于基本类型变量比较的是其存储的值是否相等,对于引用类型则比较的是其是否指向同一个对象. 如: int a = 10; int b = 20; double d ...

  5. MATLAB 绘透视图

    MATLAB绘图随记(1)--如何画一个透明平面 http://blog.sina.com.cn/s/blog_5cd4cccf0100q90p.html 小老板让我绘个图 找了些资料 最后发现mat ...

  6. php解析url并得到url中的参数及获取url参数

    <?php $url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&ar ...

  7. 写了一个hiero检查任务渲染结果的脚本

    基本思路是写了一个时间判断函数(postSequence_check)来对比transcode任务提交时间和目标文件夹内文件的修改时间来确定渲染是否成功执行,然后通过Hiero提供的postSeque ...

  8. selenium phantomjs 设置代理ip方法

    最近遇到phantomjs动态更换ip的功能,在知乎上看到一篇不错的文章,顺手记下来以备后用 phantomjs selenium 如何动态修改代理? 可以这样做(Python代码): # 不使用代理 ...

  9. 黄聪:AngularJS 动态加载控制器实例-ocLoazLazy

    一.AngularJS动态加载控制器和视图实例 路由配置关键代码: //二级页面 $stateProvider.state('main', { url: '/:name', /**如果需要动态加载数据 ...

  10. 解决nginx转发websocket报400错误

    解决nginx转发websocket报400错误 说明 由于个人服务器上面有多个项目,配置了二级域名,需要对二级域名进行转发,在转发工作这快采取了大名鼎鼎的nginx.在这之前所有的项目运行转发都没问 ...