struts Action设置数据的方法
一.属性驱动
注:示例中的实体类没有相应展示出来
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设置数据的方法的更多相关文章
- Struts2,get/set 自动获取/设置数据ActionSupport 类
主页:http://struts.apache.org/在用户请求和模块化处理方面以及页面的展现这块,Struts2 发挥了强大的作用:相对于传统的Jsp+Servlet 模式,Struts2 更适合 ...
- Loadrunner Vugen参数列表中数据分配方法及更新值的时间9种组合说明及验证
作为刚开始学习Loadrunner的新人,Data Assignment Method以及Update Method在相互组合之后,LR如何进行取值让我很是头疼. 于是花了一个晚上的时间认真学习官方文 ...
- struts2:数据校验,通过Action中的validate()方法实现校验,图解
根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种 Struts2中提供了一个com.opensymphony.xwork2.Valid ...
- struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)
前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...
- 第五课 Struts的控制器【续】Action类的execute()方法
1.Action类的execute()方法: public ActionForward execute(ActionMapping mapping, ...
- jQuery中设置form表单中action的值的方法
下面介绍在jQuery中设置form表单中action的值的方法. $("#myFormId").attr("action", "userinfo.s ...
- android之保存偏好设置信息到shareSharedPreferences,轻量级的保存数据的方法
android之保存偏好设置信息到shareSharedPreferences,轻量级的保存数据的方法 SharedPreferences保存数据到xml文件 有时候要保存activity的某些状 ...
- 【转】Caused by: Action class [com.struts.action.xxxAction] not found 解决方法
刚学习Struts,自己写了个简单程序,一启动tomcat就报错,但是我按着ctrl点击struts.xml中com.struts.action.LoginAction也能定位到LoginAction ...
- valuestack,stackContext,ActionContext.之间的关系以及action的数据在页面中取得的方法
转自:http://blog.csdn.net/quechao123/article/details/4406148 1.三者之间的关系如下图所示: 2.action的数据在页面中取得的方法 在st ...
随机推荐
- 使用kube_ping进行Keycloak群集设置 - DZone Cloud
转自:https://www.jdon.com/51501 看看如何使用kube_ping和Keycloak实现自动发现? Keycloak是一个开源软件,提供身份管理和访问管理的单点登录.Keyco ...
- jsonDB使用手冊
已在github上建立项目:https://github.com/ThinkerCodeChina/jsonDB 博客:http://blog.csdn.net/thinkercode/ 简单介绍: ...
- Quartz学习总结
一.基本介绍: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现.该项目于 2009 年被 Terracotta 收购,目前是 Terraco ...
- BTrace学习总结
一.简介: 在生产环境中经常遇到格式各样的问题,如OOM或者莫名其妙的进程死掉.一般情况下是通过修改程序,添加打印日志:然后重新发布程序来完成.然而,这不仅麻烦,而且带来很多不可控的因素.有没有一种方 ...
- django ajax报错解决:You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set.
Django版本号:1.11.15 django中ajax请求报错:You called this URL via POST, but the URL doesn't end in a slash a ...
- Spring Cloud 快速教程
官方:http://projects.spring.io/spring-cloud/ 中文:https://springcloud.cc/ https://blog.csdn.net/forezp/a ...
- 阅读<Video Test Pattern Generator v7.0>笔记
阅读<Video Test Pattern Generator v7.0>笔记 1.数据宽度的问题 TotalDataWidth的计算公式: 疑问:为什么TotalDataWidth后面需 ...
- 转 Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
今早刚上班.客户打电话过来说系统访问不了,输入用户名.用户号不能加载出来!听到这个问题,第一时间想到的是不是服务器重新启动了,Oracle数据库的相关服务没有启动的原因.查看服务的时候,发现相关的服务 ...
- 黄聪:AngularJS 动态加载控制器实例-ocLoazLazy
一.AngularJS动态加载控制器和视图实例 路由配置关键代码: //二级页面 $stateProvider.state('main', { url: '/:name', /**如果需要动态加载数据 ...
- 数据挖掘标准规范之CRISP-DM基础
一.前言 每每提到数据挖掘,总有些人上来就是ETL.是算法.是数学模型,作为搞工程实施的我而言,很是头疼.其实作为数据挖掘的而言,算法只是其实现手段.是工具和实现手段而已,我们不是在创造算法(国外职业 ...