Sturts2 三种开发模式 (转)
1、实现与 Servlet API的交互
struts2中提供了Map类型的request、session与application,可以从ActionContext对象中获得。
ActionContext对象位于com.opensymphony.xwork2包中,它是Action执行的上下文。
获取ActionContext对象:
ActionContext context= ActionContext.getContext();
获得request对象
Map request = (Map)context.get("request");
通过put()方法把需要传递的数据对象放入request对象中:
request.put("key",Object);
2、域模型DoaminModel
无论是用户注册逻辑的实现,还是其他的一些表单信息的提交操作,并不是通过操作真正的领域对象进行实现。
原因是因为将所有的实体对象的属性都封装到了Action对象中,而Action对象只是操作一个实体对象中的属性,
而不是操作某一个实体对象。这样的操作有些偏离了领域模型设计的思想,比较好的设计是将某一领域的实体
直接封装成一个实体对象。
struts2的action中使用domain域模型接收参数
private UserInfo user;
public void setUser(UserInfo user) {
this.user = user;
}
public void getUser(){
return user;
}
使用DomainModel接收参数
a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法;
b.接收:通过对象的属性接收参数,如:user.getUserName();
c.发送:使用对象的属性传递参数,如:user2_add?user.userName=MGC;
3、驱动模型ModelDriven
驱动模型ModelDriven:(表单属性必须和实体类属性名称保持一致)
模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts
将各个请求参数(javabean的属性)封装到一个JavaBean对象中,Action接收这个实例对象并用该对象进行相关处理返回处理结果。
模型驱动的Action中定义javaBean并实例化,并且需要提供该JavaBean的getter和setter方法。Action需要实现ModelDriven接口。
还是以UserAction为例:
public class UserAction extends ActionSupport implements ModelDriver<User>{
private User user= new User();
/*
*请求处理方法
*/
@Override
public User getModel(){
return this.user
}
}
getModel()方法返回了明确的实体对象user,所以表单中的元素名称不需要指定明确的实体对象引用,即可成功的将表单参数注入到user对象
Sturts2 三种开发模式 (转)的更多相关文章
- 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...
- APP的三种开发模式
转载于http://pleasureswx123.github.io/2014/09/15/APP%E7%9A%84%E4%B8%89%E7%A7%8D%E5%BC%80%E5%8F%91%E6%A8 ...
- ASP.NET的三种开发模式
前言 ASP.NET 是一个免费的Web开发框架,是由微软在.NET Framework框架中所提供的,或者说ASP.NET是开发Web应用程序的类库,封装在System.Web.dll 文件中.AS ...
- EF3:Entity Framework三种开发模式实现数据访问
前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...
- Entity Framework:三种开发模式实现数据访问
原文地址 http://blog.csdn.net/syaguang2006/article/details/19606715 前言 Entity Framework支持Database First. ...
- .NET EF框架的安装、及三种开发模式
一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...
- EntityFramework 学习 一 三种开发模式
Entity Framework支持3种不同的开发方法 1.Code First 2.Model First 3.Database First Code First 使用Code First开发模式, ...
- asp.net 的三种开发模式
一, Web Pages 是三种创建 ASP.NET 网站和 Web 应用程序的编程模式中的一种. 其他两种编程模式是 Web Forms 和 MVC(Model View Controller 模型 ...
- APP三种开发模式
目前主流应用程序大体分为三种:Web App(网页应用).Hybrid Ap(混合应用)p. Native App(原生应用). nativeapp是一个原生程序,一般运行在机器操作系统上,有很强的交 ...
随机推荐
- TCP/IP三次握手与四次挥手(转)
一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: ...
- Django框架之单表操作
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- vue-cli中config目录下的index.js文件详解
vue-cli脚手架工具config目录下的index.js解析 转载自:http://www.cnblogs.com/ye-hcj/p/7077796.html // see http://vuej ...
- Java最新趋势之Spring阅读
(原文地址:点我) This Week in Spring: Cloud Native and the State of Java This compilation of news and tutor ...
- HackerRank - powers-game-1 【博弈论】
HackerRank - powers-game-1 [博弈论] 题意 给出 * 2^1 * 2^2 * 2^3 * 2^4 * 2^5 * 2^n 这一串东西 ,然后有两个玩家,*号是可以被替换掉的 ...
- 单例模式及getInstance()的用法
一般在单例模式下使用.getInstance()创建对象:但并不是所有有私有构造方法,对外通过getInstance方法提供 实例的情况就是单例模式. 注:单例模式:一个类有且只有一个实例.1,一个私 ...
- xaml可扩展应用程序标记语言
xaml 类似于 html,但不是html,它是基于xml语言的:’html可以呈现在浏览器中而xaml 可以现实 3d动画等特效. xaml 是强类型语言, 是解释性语言,虽然他可以被编译.
- hadoop源码分析
hadoop 源代码分析(一) Google 的核心竞争技术是它的计算平台.HadoopGoogle的大牛们用了下面5篇文章,介绍了它们的计算设施. GoogleCluster:http://rese ...
- ASC和字符转化,整形和String转化
public class ASCTest { public static void main(String[] args) { /* 区别这两种 String s = "123"; ...
- RabbitMQ 简单了解以及使用
RabbitMQ 开发语言:Erlang – 面向并发的编程语言. AMQP:是消息队列的一个协议. mysql 是 java 写的吗?不是 那么 java 能不能访问?可以,则通过(驱动)协议;那么 ...