flex j2ee 之小记 -凯发k8网页登录

java, c , linux c, c#.net 技术,软件架构,领域建模,it 项目管理

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(
123);   
 
// 输出:    
 
// 1    
// 2   
// 3 
当然也可以用类似 java 的形式  function traceargarray(x: int,  args) 

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

1
class 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.
6.
7.
 8. 
 9. 
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. 
14. http://www.bluejia.cn/blog/?action=show&id=18



本博客为学习交流用,凡未注明引用的均为本人作品,转载请注明出处,如有凯发k8网页登录的版权问题请及时通知。由于博客时间仓促,错误之处敬请谅解,有任何意见可给我留言,愿共同学习进步。
posted on 2008-09-11 19:03 jack.wang 阅读(5928) 评论(4)     所属分类: 开发技术架构师篇
# re: flex j2ee 之开发与架构 2008-09-11 08:53 交口称赞
写的比较乱,不知道是说代码,给个例子,还是谈架构

正统的方案是flex+lcds+j2ee
免费的方案是flex+bds+j2ee
异构的方案是flex+hession+xxxx

httpservice 和webserivce是下下之选

而且,完全可以在一个项目里面搞定,不需要分开建项目
也就是说可以在一个项目里面同时开发flex和j2ee
前提是你会配置插件和整合项目


而且没有你写的这么复杂,说实话,你给的例子只会让新手误解flex很复杂,其实flex是很简单,开发效率超高的
几行代码的事情
flex的as3是同态语言,java对象通过bds到前台可以直接使用
你可以看看bds的官方例子
一个后台取数据的表格
几行代码。直接把后台一个java的list传到前台,显示在一个表格里面  回复  
  

# re: flex j2ee 之开发与架构 2008-09-11 09:05 jack.wang
@交口称赞
谢谢啦,flex 没做过东西,只是兴趣玩下。
谢谢指导啊!  回复  
  

# re: flex j2ee 之小记[未登录] 2008-09-11 19:10
能给我mail一份代码么?afeigoo@163.com
正在学习中……  回复  
  

# re: flex j2ee 之小记 2008-09-11 19:17 jack.wang
可以下载了  回复  
  

网站地图