action类中属性驱动和模型驱动的区别
1.Struts2的属性驱动
在Action类中,属性××通过get××()和set××()方法,把参数在整个生命周期内进行传递,这就是属性驱动
代码如下:
package org.abu.csdn.action.user;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport { //首先类RegisterAction 必须继承ActionSupport
private String uname;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
@Override
public String execute() throws Exception { //重写execute() 方法执行Action动作
return ActionSupport.SUCCESS;
}
public void validate(){ //重写validate()方法
if(uname==null || uname.trim().length()==0){
this.addFieldError("uname","用户名不能为空"); //重写addFieldError()方法来进行错误处理
}
}
}
2.Struts2的模型驱动
把用户请求参数封装到一个javabean中,Action中使用一个独立的modle实例来封装用户的请求参数和处理结果,action完成业务逻辑调度,使用2个类来分解action任务,这就是模型驱动。
注意:使用模型驱动时,在继承ActionSupport类或者实现action接口时,必须实现一个ModelDriver接口,该接口的作用建立一个Model对象来代替Action本身把数据存入ValueStack
代码如下:
//把用户请求参数封装到User中
public class User {
private String uname;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}
//Action中使用一个独立的RegisterAction(){}实例来封装用户的请求参数和处理结果
package org.abu.csdn.action.user;
import org.abu.csdn.dto.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class RegisterAction extends ActionSupport implements ModelDriven<User> {//实现ModelDriver接口,该接口的作用建立一个Model对象来代替Action本身把数据存入ValueStackAc。
//<User>: 在这里引入student类
private User user=new User();
public User getModel() {// 模型驱动必须实现的方法,也是ModelDriven接口中唯一的方法
return user;
}
public RegisterAction(){
getModel() .setUname("Marry") ;
}
public String oneNewRegister(){
getModel() .setUname("Danny") ;
}
@Override
public String execute() throws Exception { //重写execute() 方法执行Action动作
return SUCCESS;
}
public void validate(){ //重写validate()方法
if(user.getUname() ==null || user.getUname() .trim().length()==0){
this.addFieldError("uname","用户名不能为空"); //重写addFieldError()方法来进行错误处理
}
}
}
action类中属性驱动和模型驱动的区别的更多相关文章
- Struts2中属性驱动与模型驱动
属性驱动: 1.概念 能够利用属性驱动获取页面表单元素的内容 2.步骤 1.在action中声明属性,属性的名称和页面元素中name属性的值保持一致 2.action中的属性必须有set和get方法 ...
- Struts2的属性驱动与模型驱动的区别
1.Struts2的属性驱动. Struts2的属性驱动指的是在action中JSP页面的每一个form中的name都对应在action中有一个属性与之对应.看下面代码片段: <form act ...
- strus2中获取表单数据 两种方式 属性驱动 和模型驱动
strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...
- Struts2属性驱动与模型驱动
为什么要使用属性驱动和模型驱动 struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和HttpServletResponse方法在获 ...
- Action类中获取request等对象的方法
struts2中的action类中,SevletActionContext可以获取
- 在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法
在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法 ==========方法1: --------1. 选相应 ...
- 在Action类中获得HttpServletResponse对象的四种方法
在struts1.xAction类的execute方法中,有四个参数,其中两个就是response和request.而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得Ht ...
- 解决SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题
一.在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库) jpa: database: MYSQL show-sql: true #Hib ...
- Flex的 Event中属性currentTarget与target的区别
Flex的 Event中属性currentTarget与target的区别 1.区别 (1)currentTarget是事件的处理对象(event processor) (2)target是事件的调用 ...
随机推荐
- bzoj 4080: [Wf2014]Sensor Network【瞎搞+随机化】
参考:https://blog.csdn.net/YihAN_Z/article/details/73380387 一点都不想写正解.jpg random_shuffle一下然后贪心的加点,和ans取 ...
- 【转】Spring,Spring MVC及Spring Boot区别
对于一个Java开发者来说,Spring可谓如雷贯耳,无论是Spring框架,还是Spring引领的IOC,AOP风格,都对后续Java开发产生的深远的影响,同时,Spring社区总能及时响应开发者的 ...
- linux下的日志压缩脚本
linux下的日志压缩脚本: #!/bin/bash #第一步:先定义项目列表如下: projects="project-a project-b project-c project-d&qu ...
- 前端基础jQuery
jQury jQuery 是一个 JavaScript 函数库,jQuery 极大地简化了 JavaScript 编程. jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS ...
- [SDOI2016]墙上的句子
题目描述 考古学家发现了一堵写有未知语言的白色墙壁,上面有一个n行m列的格子,其中有些格子内被填入了某个A至Z的大写字母,还有些格子是空白的. 一直横着或竖着的连续若干个字母会形成一个单词,且每一行的 ...
- [POI2007]大都市meg
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1..n ...
- k-substrings Codeforces - 961F
不会做.. 官方题解: 1.枚举某个前缀(指题目要求的相同前后缀中的前缀)的中心位置i,那么对应后缀的中心位置已经确定了(n-i+1),可以二分答案求出对于每个中心位置i最大的符合要求的相同前后缀(设 ...
- Android 线程池系列教程(3) 创建线程池
Creating a Manager for Multiple Threads 上一课 下一课 1.This lesson teaches you to Define the Thread Pool ...
- 不支持正在使用的 .Net 组帧模式。有关详细信息,请参阅服务器日志--解决方案
问题在于 NetTcpBinding 服务端和客户端配置不一致. 至少 客户端和服务端:安全性.是否启用可靠会话以及传输方式必须一致 主要是传输方式导致 "不支持正在使用的 .Net 组帧 ...
- SQL快速备份
ALTER PROCEDURE [dbo].[usp_Backup_DataBase] ( @BackupDataBaseName VARCHAR(128) )AS BE ...