Flex+J2EE 之小记 
Jack. Wang 2008-9-10(本待完善...) 
wbjeasygo@163.com 
由于本人也是初学者(刚看了两天视频),所以请高手指点,这里赞下 blog 名叫交口称赞的兄弟,他在flex 方面是行家,谢谢了。

摘要:最近晚上抽出点时间写了这篇文章,关于 Flex 开发方面的语言和架构,介绍了大家都熟悉的分层结构,着重介绍视图层(flex 实现),服务控制层和领域模型层,并按照严格分层,高解耦合性并结合 Flex 技术实验了一个用户管理小模块,案例不是目的,重要的是介绍开发思想。本文第一部分介绍 Flex 相关技术以及 ActionStript3.0 语言。第二部分介绍开发实例的开发过程,代码可以下载,亮点在接口工程。由于本人 flex 经验不足,在以后的工作中会不断补充。
关键字:Flex, J2EE, 架构
1. Flex 介绍 
        FLEX,是Rich Internet Applications时代的牛×产物Rich Internet Applications,翻译成中文为富因特网应用程序。传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”,而富因特网应用程序的出现也就是为了解决这个问题。 
       Flex最重要的两个技术要数AS和MXML, MXML 和 HTML 一样是标记语言,它描述了反映内容与功能的用户界面。与 HTML 不同的是,MXML 可对表示层逻辑与用户界面和服务器端数据绑定提供声明抽象。MXML 可将表示与业务逻辑的问题彻底分开,以实现最大程度地提高开发人员的生产率及应用程序的重复使用率。MXML 的开发基础是在迭代过程上,这与其他类型的 Web 应用程序文件如 HTML、JSP、ASP是相同的。开发 MXML 应用程序就象打开一个文件编辑器一样简单,只要输入一些标签、保存文件,然后在 Web 浏览器上打开文件 URL 即可。 
        MXML 文件同时也是普通的 XML 文件,所以可以选择多种开发环境。可以在简单文件编辑器、专用 XML 编辑器或是支持文件编辑的集成开发环境 (IDE) 中进行开发。由于 MXML 符合 W3C XML 方案的定义,您也可以使用结构化编辑,如代码着色和代码提示。 MXML和HTML间最大区别:前者定义的应用是编译的SWF文件,执行于FlashPlayer客户端中。后者是基于页面技术的应用。因此前者能提供更丰富的、动态的UI。MXML不支持Flash的某些特性,例如:时间轴。但是可以利用Flash设计组件并应用在Flex中。MXML应用可以是一个MXML文件,也可以是多个MXML组成,MXML支持MXML文件形式的自定义组件、ActionScript文件形式的自定义组件以及在Flash中建立的自定义组件。 FLEX试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员比从前更快更简单地开发动画及RIA应用。在多层式开发模型中,FLEX应用属于表现层。FLEX的语言和文件结构也试图把应用程序的逻辑从设计中分离出来
         总之,flex 是未来界面开发的一个好方向,据我了解很多公司都要求员工要学习 flex 技术,可见 flex 受欢迎的程度。 
2 .ActionStript3.0 特性介绍
       ActionScript 是针对 Adobe Flash Player 运行时环境的编程语言,它在 Flash 内容和应用程序中实现了交互性、数据处理以及其它许多功能,ActionScript 是由 Flash Player 中的 ActionScript 虚拟机 (AVM) 来执行的。ActionScript代码通常被编译器编译成“字节码格式” ,有点类似 java 的处理和运行机制。变过 C#,Java和javascript程序的朋友,肯定能在 ActionScript 中找到这些语言的影子。
 2.1内置命名空间和自定义命名空间
       四个内置修饰符:

1 public :对所有代码可见 
2 private: 只对类内部可见 
3 internal :只对定义所在的同一包内可见 
4 protected :对同一包以及不同包的子类可见

自定义命名空间:
             使用关键字namespace定义命名空间,声明属性和方法时,应用命名空间。
             AS 代 码:

1
2Namespace testSpace="org.blogjava.jm/testSpace ";   
3testSpace myfunction2():void{} 
4 
5use mySpace2;  
6myfunction2(); //调用使用 use 关键字打开命名空间

2.2       Local 变量特点    
         与java不同的是,在as3中,变量没有块级作用域(即两人大括号中间),如果在一个块内声明了一个变量,比如一个for循环内声明了一个变量,它在该代码所在整个函数内都是可访问的

1function myFunction():void{   
2     for(var i:int=0;i<5:i++){   
3       var last:int = i;    
4    }    
5     trace(last); //last 在 for 中定义但可以在 for 块外面访问到,个人觉得这样设计欠妥,尽管很方便。   
6

2.3       Dynamic 类 
       Object 类本身就是动态类,当然也可以用 dynamic 关键字来声明一个类,所谓动态就是在运行时可以对类追加属性和方法。

1dynamic class Protean{} 
2var myProtean:Protean = new Protean();  
3myProtean.name = "jack.wang";  
4myProtean.password = 3;  
5trace(myProtean. name , myProtean.password ); 

  2.4       定义函数的两种方式:函数语句和函数表达式   

 1//函数语句声明    
 2Function fun1():void{} 
 3       
 4//函数表达式声明  
 5var fun2:Function = function():void{}  
 6//函数表达式声明的函数是不能够被垃圾回收的,必须显示的调用 delete 命令。
 7var t:Test = new Test(); //t是动态类Test的一个实例 
 8t.funt = function(){};//把一个函数声明为t的一个属性 
 9delete t.funt; //删除刚才新增的函数,我们刚才声明的函数也被回收了
10

2.5       在as3中也有arguments对象,功能基本上和javascript中的一样。       
          arguments 对象是一个数组,其中包括传递给函数的所有参数,arguments.length 属性报告传递给函数的参数数量,(避免将 "arguments" 字符串作为参数名,因为它将遮蔽 arguments 对象)

 function traceArgArray(x:int):void  
 {
    for (var i:uint = 0; i < arguments.length; i++) {  
  trace(arguments[i]); 
 }   
 }   
 traceArgArray(1, 2, 3);   
 // 输出:    
 // 1    
// 2   
// 3 
当然也可以用类似 java 的形式  function traceArgArray(x: int,  args) 

2.6       在as3中允许定义同名的静态属性和实例属性  


1class StaticTest {  
2 static var message:String = "static variable";
3 var message:String = "instance variable";     } 
4 var myST:StaticTest = new StaticTest(); 
5trace(StaticTest.message); // 输出:静态变量    trace(myST.message); // 输出:实例变量 

 2.7       在as中有一个叫做set和get存取器的东西,类似JavaBean,但又有所不同。

class GetSet { 
private var privateProperty:String;   
public function get publicAccess():String{ 
return privateProperty;    
}
public function set publicAccess(setValue:String):void  {        privateProperty = setValue;    
}  
}  

 3 个人实验介绍
       案例是超级简单的,开发Web 应用的,不管你是基于 J2EE,.net 平台还是其他的 PHP 等等都很熟悉分层架构,其中五层是最熟悉不过的了,一般分为表示层,控制层,服务层,模型层和数据层,有的公司干脆就把服务层和模型层合并起来和控制层合并在一起,基于分层的开发可以横向也可以纵向,由于引入 flex 技术,因为并不是所有人都懂得 flex 开发方式,尽管他和传统的 Swing, SWT,GWT开发很相近 ,不过这样需求分析时可以构建可演进的原型系统,界面也很 RIA。
       人们常提面向接口编程于是经常看到 IUser user=new User();这样的代码,似乎就是在用接口,但是 new 的动作还是有依赖,于是人们用一些设计模式比如 Factory, Proxy,反射等等模式,后来又有了更好的依赖注入,似乎很完美了,可人们又陷进了过度设计,其实接口应用比直接用原类要多耗费几个机械指令 User user=new User(),而且在一个内聚的组件中尽量用对象直接连接,该分开的时候我们去用接口分,接口的目的是为了抽象,抽象的目的是为了解耦。
       本开发为了把模型层和服务层完全分开,引入接口工程,也就是单独开发一个工程来设计接口,这个工程有设计师开发。 用户接口和工厂接口这两个类在单独的工程里开发,以便于模型和服务层同步开发。 在服务层不能对外暴露 IUser 接口,而他也要接受数据,这里用的是 UserVO 对象来封装数据,服务层不操作模型层的任何实现类,这样这两层之间完全解耦,当接口工程和实现完成时候打成 jar 包到 web 工程下 Flex 开发和 HTML开发有很大的不同,客户端和服务端交互的不是 HTML 而是 XML,所以在服务器端    的 Servlet 就应该输出 XML 流到客户端。 最后 Flex 也是一个单独的工程,通过 HTTPService 和 Web 服务器端交互数据。
下载:我的实验代码
其他视频资料:http://www.blogjava.net/Jack2007/archive/2008/09/05/227125.html

参考文献 
1.http://ezen.javaeye.com/blog/107397 
2.http://www.nshen.net/blog/article.asp?id=555 
3. http://blog.csdn.net/mozilla/archive/2007/08/23/1756761.aspx 
4.http://hi.baidu.com/jlhh/blog/item/225aea197716b77adab4bd7f.html 
5.http://yexin218.javaeye.com/blog/203032 
6.http://yexin218.javaeye.com/blog/203032 
7.http://www.blogjava.net/realsmy/archive/2008/01/17/176054.html
 8. http://daoger.javaeye.com/blog/204694
 9. http://www.blogjava.net/alps/archive/2008/07/23/216940.html 
10.http://xy-z487.javaeye.com/blog/238074 
11.http://www.pin5i.com/showtopic-19682.html 
12. http://goday.blogbus.com/logs/13402716.html 
13. http://www.flashas.net/html/Flex/20070525/1779.html 
14. http://www.bluejia.cn/blog/?action=show&id=18

Flex+J2EE 之小记相关推荐

  1. Pomer Flex J2EE (Flex+BlazeDS+Hibernate + spring )框架

    1.为什么使用POMER Pomer是一 个开源的企业信息管理系统基础框架,它提供了一系列企业信息管理系统的基础功能,包括企业组织架构管理,角色权限管理,菜单管理,数据权限控制等功能. Pomer提供 ...

  2. Flex+J2EE获取FlexSession的方法

    -------web.xml文件 <listener>         <listener-class>flex.messaging.HttpFlexSession</l ...

  3. Flex form 提交list数据表单

    在Flex+J2EE开发中,采用动态脚本的方式提交一个list表单到后台,方法如下: Flex 功能代码: var request:HTTPService = new HTTPService(); r ...

  4. Spring Roo开发初评

    Spring Roo开发初评 我们广泛使用Spring MVC 和 SpringSource 的其他产品, 来 构建企业Web 应用. 作为一家外包 公司 ,我们在前端开发严重地依赖于 Flex,我们 ...

  5. 基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证)企业普及版贝斯OA与工作流系统...

    基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证)企业普及版贝斯OA与工作流系统 课程学习地址:http://***/goods.php?id=173 本项目是 ...

  6. Flex + LCDS + J2EE Web项目(1)

    [color=blue]请关注新浪微博 账号:大数据进行时([url]http://weibo.com/u/3272022684[/url])[/color] 如何建立一个能和J2EE交互的Flex ...

  7. Flex入门搭建j2EE开发环境

    本文介绍 Flex 开发的基础知识:包括如何搭建开发环境,如何建立和部署简单的 Flex 项目.首先你的机器确保安装了jdk+eclipse(或者MyEclipse)+tomcat,现在你所需要的只是 ...

  8. oracle flex cluster,12c flex cluster小记(3)

    先是安装数据库软件,这很容易,这边省略不讲了.我要讲的是安装完数据库软件之后,我用dbca建库,建库过程没报什么错,但是却发现完成后,2个节点只有一个节点有db instance,另一节点就是没有db ...

  9. css flex 小记

    flex: 1; box-sizing:border-box; overflow:scroll; 代码考出来自己看效果 <!DOCTYPE html> <html><he ...

最新文章

  1. aix oracle 登录用户,AIX 系统及 Oracle 数据库用户权限管理
  2. 华为手机充满有提醒吗_华为推出的联发科天玑手机华为nova8 SE,你会买吗?
  3. Websphere的类加载器以及策略的简单介绍
  4. 双足机器人简单步态生成
  5. jQuery学习之八---文档处理
  6. 利用pt-table-checksum校验数据一致性
  7. python读取fiddler_Python3.x+Fiddler抓取APP数据
  8. 【易语言】大漠插件使用
  9. Kmeans算法实现
  10. Itunes恢复备份失败解决办法(C盘空间不足)
  11. WEB应用log4j1.x升级到log4j2.17.1
  12. Red Hat (Centos7) 下安装最新 FFmpeg
  13. 机械零件委托加工合同
  14. 用python实现过滤存在大部分空白背景的图片
  15. Unity VR切换场景闪退
  16. TX2安装opencv3.4.0
  17. 用python爬取智联招聘
  18. 计算机图形Opengl的实验报告,计算机图形学OpenGL实验四.doc
  19. ISC 2018 蓝鲸魔塔线上赛-pwn
  20. unity完整读取串口数据方法

热门文章

  1. 全文检索lucene中文分词的一些总结
  2. 数论----gcd和lcm
  3. 如何选择合适的分布式机器学习平台
  4. 8、Python与设计模式--门面模式
  5. Linux SSH远程文件/文件夹传输命令scp
  6. Recommender Systems基于内容的推荐
  7. Android NDK 简单介绍、工具安装、环境配置
  8. DataUml Design 教程3-模型与数据库同步
  9. Xcode 真机程序发布测试
  10. 搭建高效、可靠、稳定的WEB服务器