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 三种开发模式 (转)的更多相关文章

  1. 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式

    作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...

  2. 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 ...

  3. ASP.NET的三种开发模式

    前言 ASP.NET 是一个免费的Web开发框架,是由微软在.NET Framework框架中所提供的,或者说ASP.NET是开发Web应用程序的类库,封装在System.Web.dll 文件中.AS ...

  4. EF3:Entity Framework三种开发模式实现数据访问

    前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...

  5. Entity Framework:三种开发模式实现数据访问

    原文地址 http://blog.csdn.net/syaguang2006/article/details/19606715 前言 Entity Framework支持Database First. ...

  6. .NET EF框架的安装、及三种开发模式

    一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...

  7. EntityFramework 学习 一 三种开发模式

    Entity Framework支持3种不同的开发方法 1.Code First 2.Model First 3.Database First Code First 使用Code First开发模式, ...

  8. asp.net 的三种开发模式

    一, Web Pages 是三种创建 ASP.NET 网站和 Web 应用程序的编程模式中的一种. 其他两种编程模式是 Web Forms 和 MVC(Model View Controller 模型 ...

  9. APP三种开发模式

    目前主流应用程序大体分为三种:Web App(网页应用).Hybrid Ap(混合应用)p. Native App(原生应用). nativeapp是一个原生程序,一般运行在机器操作系统上,有很强的交 ...

随机推荐

  1. oracle Dba之路

    如何快速的成为一个合格的 DBA? 2010年11月03日 11:25:00 阅读数:584 原文来自:http://topic.csdn.net/u/20101031/21/A78B2EA1-6F2 ...

  2. Mysql学习笔记—视图

    1.什么是视图 视图(View)是一种虚拟存在的表.其内容与真实的表相似,包含一系列带有名称的列和行数据.但是视图并不在数据库中以存储的数据的形式存在.行和列的数据来自定义视图时查询所引用的基本表,并 ...

  3. java 多线程 day05 线程范围内的数据共享

    import java.util.HashMap;import java.util.Map;import java.util.Random;/** * Created by chengtao on 1 ...

  4. SAP系统接口方式:

    SAP系统接口方式: 1.PI - 信使中间件 (大公司多选择) 数据: SAP- PI- U8 U8- PI- SAPPI 底层用的还是webservice 技术优点:实时性高: 可处理大数据(在调 ...

  5. C#__ 模拟鼠标单击事件

    首先要用到的引用有 [DllImport("User32")] public extern static void mouse_event(int dwFlags, int dx, ...

  6. LeetCode:比较含退格字符串【844】

    LeetCode:比较含退格字符串[844] 题目描述 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = ...

  7. MAC brew软件安装

    之前一直怀念ubuntu下的apt-get,因为实在是方便,需要安装什么,一个命令搞定,相关的依赖包统统由apt-get维护.下载,编译,安装,那叫一个痛快.什么软件用着不爽,一个命令卸载! 怀念ap ...

  8. Javascript中call()和apply()的用法 ----1

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  9. launch 文件解析

    roslaunch工具是ros中python实现的程序启动工具,通过读取launch文件中的参数配置.属性配置等来启动一系列节点: 很多ROS包或源码包中都有launch文件,一般为该程序包能够运行起 ...

  10. c语言URL通过Http下载mp3 格式

    通过http协议下载MP3的关键就是 整块打包,一块一块向文件里面存储.读取的时候用二进制 /***szWebAddr: 页面地址(包含host+addr) szMp3FileName:将要存储文件的 ...