`
lijingyao8206
  • 浏览: 219309 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex & iBatis &Hibernate &Spring—师徒奶茶系统V1总结

阅读更多
    昨晚只睡了两个小时来改进这个属于我们“下午茶”师徒群的同学们。主要是用Flex做前端,Java做后台。其实整个系统搭建起来很容易,因为Flex&Java应该说是我最熟悉的吧。为了快速和友好的交互,当然还是用这个。不过这次比较傻的是,前几天实现的用户列表的增删查改是用iBatis,主要原因是想基于以前一个简单的测试项目,前面几篇博文中有详细的介绍。可是,昨晚抽风又想用Hibernate了。这样就是说我需要两个信道“AMF”和“RTMP”。所以就会出现一些问题。不过还好,最后发现问题应该是AMF信道的配置。Channel当时临时写在了客户端代码里面。其实应该写在一个properties或者xml文件中去读取的。好了吧。废话不多说。上代码。首先是客户端代码。主要的AS:
 <mx:Script>
        <![CDATA[
        	import mx.controls.DateField;
        	import control.print.FormPrintView;
        	import mx.managers.PopUpManager;
        	import vo.User;
        	import mx.collections.ArrayCollection;
        	import mx.rpc.events.ResultEvent;
        	import mx.rpc.events.FaultEvent;
        	import mx.utils.ArrayUtil;
            import mx.controls.Alert;
            import control.showGoods;
            import mx.printing.PrintDataGrid;
			import mx.printing.FlexPrintJob;
			import control.*;
			
			
            [Bindable]
            private var users:ArrayCollection;
            [Bindable]
            private var myUser:User=new User();
            
            private function selectedDGrid():void{
            	userName.text=userdg.selectedItem.username;
            	password.text=userdg.selectedItem.password;
            	company.text=userdg.selectedItem.company;
            	note.text=userdg.selectedItem.note;
            }
            
            private function getAllUsers_resultHandler(event:ResultEvent):void
			{
                users = event.result as ArrayCollection;
            }
            
            private function getUserByCompanyName_resultHandler(event:ResultEvent):void
            {
                users = event.result as ArrayCollection;
            }
            
            private function getUsersByQuery_resultHandler(event:ResultEvent):void
            {
                users = event.result as ArrayCollection;
                
            }
            
            private function insertUser():void{
            	 myUser.username=userName.text;
             	 myUser.password=password.text;
             	 myUser.company=company.text;
             	 myUser.note=note.text;
             	 user.insertUser(myUser);
             	 Alert.show("save a user named : "+userName.text,"SAVE!");
            }
            
            private function clearTexts():void{
            	userName.text='';
            	password.text='';
            	company.text='';
            	note.text='';
            }
            
            
            private function updateUser():void{
                 var uu:User=userdg.selectedItem as User;
            	 uu.username=userName.text;
             	 uu.password=password.text;
             	 uu.company=company.text;
             	 uu.note=note.text;
             	 user.updateUser(uu);
             	 Alert.show("update a user!","UPDATE!");
            }
            
            private function deleteUser():void{
            	 user.deleteUser(userdg.selectedItem.id);
            	 Alert.show("delete a user named : "+userdg.selectedItem.username,"DELETE!");
            }
            

            private function faultHandler(event:FaultEvent):void
            {
                Alert.show(event.fault.faultString, "Error");
            }
            
            public function doPrint():void {

	           var printJob:FlexPrintJob = new FlexPrintJob();
	           if (printJob.start()) {
	               var thePrintView:FormPrintView= new FormPrintView();
	               Application.application.addChild(thePrintView);
	
	               thePrintView.width=printJob.pageWidth;
	               thePrintView.height=printJob.pageHeight;
	               thePrintView.myDataGrid.dataProvider=userdg.dataProvider;
	               thePrintView.showPage("single");
	               if(!thePrintView.myDataGrid.validNextPage)
	               {
	                   printJob.addObject(thePrintView);
	               }
	               else
	               {
	                   thePrintView.showPage("first");
	                   printJob.addObject(thePrintView);
	                   thePrintView.pageNumber++;
	                   while(true)
	                   {
	                       thePrintView.myDataGrid.nextPage();
	                       thePrintView.showPage("last");
	                       if(!thePrintView.myDataGrid.validNextPage)
	                       {
	                           printJob.addObject(thePrintView);
	                           break;
	                       }
	                       else
	                       {
	                           thePrintView.showPage("middle");
	                           printJob.addObject(thePrintView);
	                           thePrintView.pageNumber++;
	                       }
	                   }
	               }
	               Application.application.removeChild(thePrintView);
	           }
	           printJob.send();
       }
		
            
           
        ]]>
    </mx:Script>





AS一如往常,木有什么特别。下面是远程调用的RemoteObject 调用实现:

 <mx:RemoteObject  id="user" destination="userservice"  channelSet="{channelSet}" fault="faultHandler(event)" source="com.qiyun.spritis.pojo.User">
        <mx:method name="getAllUsers" result="getAllUsers_resultHandler(event)"/>
        <mx:method name="getUserByCompanyName" result="getUserByCompanyName_resultHandler(event)">
            <mx:arguments>
                <arg1> {companies.selectedItem.data}</arg1>
            </mx:arguments>
        </mx:method>
        <mx:method name="updateUser" >
        <mx:arguments>
        	<arg1>
        		{myUser}
        	</arg1>
        </mx:arguments> 
        </mx:method>
        <mx:method name="insertUser">
        <mx:arguments>
        	<arg1>
        		{myUser}
        	</arg1>
        </mx:arguments> 
        </mx:method>
        <mx:method name="deleteUser" >
        <mx:arguments>
        	<arg1>
        		{userdg.selectedItem.id}
        	</arg1>
        </mx:arguments> 
        </mx:method>
        
    </mx:RemoteObject>



后面就是一些界面代码,没有太大参考价值,这里把图贴出来吧。




以上是ibatis和Spring的部分。下面是Hibernate。用了LCDS的data-management.重要的客户端代码是这一行:
<mx:DataService id="hib_good" destination="hibernate_goods" autoCommit="true" />

另外,关键的配置在客户端的data-management-config.xml里面:
<?xml version="1.0" encoding="UTF-8"?>
<service id="data-service" 
    class="flex.data.DataService">

    <adapters>
        <adapter-definition id="actionscript" class="flex.data.adapters.ASObjectAdapter" default="true"/>
        <adapter-definition id="java-dao" class="flex.data.adapters.JavaAdapter"/>
    </adapters>

	<default-channels>
        <channel ref="my-rtmp"/>
    </default-channels>
    
     <destination id="hibernate_goods">
		<adapter ref="java-dao" />
		<properties>
			<use-transactions>true</use-transactions>
			<source>flex.data.assemblers.HibernateAssembler</source>
			<scope>application</scope>
			<metadata>
				<identity property="id" />
			</metadata>

			<network>
				<paging enabled="false" pageSize="10" />
				<throttle-inbound policy="ERROR" max-frequency="500" />

			</network>
			<server>
				<fill-method>
					<name>fill</name>
					<params>java.util.List</params>
				</fill-method>
				<hibernate-entity>com.qiyun.spritis.pojo.Goods</hibernate-entity>

				<update-conflict-mode>property</update-conflict-mode>
				<delete-conflict-mode>object</delete-conflict-mode>
				<fill-configuration>
					<use-query-cache>false</use-query-cache>
					<allow-hql-queries>true</allow-hql-queries>
				</fill-configuration>
			</server>
		</properties>
	</destination>
</service>




hibernate部分列表的页面图片如下:





到这里就差不多了。Java代码很简单,没有复杂的逻辑。这个就是5个小时做出来的师徒奶茶订阅系统。以后和徒儿们一起喝奶茶就可以用这个了。Flex的魅力是无穷的,不过最近在学习JS和CSS还有些前端的东西。后续一点点分享出来吧。

  • 大小: 49.3 KB
  • 大小: 102.5 KB
2
2
分享到:
评论
1 楼 王文丰 2011-11-21  
顶,flex应用的项目越来越多,但大多局限于GIS平台开发,其它方面好像应用挺少,

相关推荐

    Spring MVC+Hibernate&Ibatis学习 例子 教程

    Spring MVC、Hibernate和iBatis是Java开发中常用的三大框架,它们在Web应用程序开发中各自承担着不同的职责。本教程将深入探讨这三个框架的核心概念、使用方法以及它们之间的协同工作。 **Spring MVC** 是Spring...

    Struts2 Spring Hibernate IBatis

    Struts2 Spring Hibernate IBatis Struts2 Spring Hibernate IBatisStruts2 Spring Hibernate IBatisStruts2 Spring Hibernate IBatis 只需要导入相应的jar包就行了 ,数据库是mysql :数据库名叫做mydatabase,表名...

    spring与hibernate以及ibatis集成的实例和具体配置图解

    标题“spring与hibernate以及ibatis集成的实例和具体配置图解”表明,这个资料包主要讲解如何将这三个框架结合在一起使用,以构建一个高效、灵活的后端系统。集成这些框架可以实现数据访问层的无缝切换,同时利用...

    struts2+hibernate+spring+ibatis 小实例

    struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2+hibernate+spring+ibatis.rar

    Struts2、Hibernate、Spring 和 iBatis 是四个在Java Web开发中广泛应用的开源框架,它们的整合常常被称为SSH(Struts2、Spring、Hibernate)或者SHiP(Struts2、Hibernate、iBatis、Spring)。这个"struts2+...

    springMVC+ibatis+hibernate+spring+boostrap框架

    总结来说,Spring MVC 提供了 Web 应用的架构,iBatis 和 Hibernate 负责数据访问,Spring 提供了整个应用的胶水代码,Bootstrap 则为用户界面提供了现代且易用的设计。这样的组合可以构建出高效、可扩展且易于维护...

    struts2-spring-ibatis-hibernate(hibernate与ibatis集成)

    Struts2、Spring、iBatis 和 Hibernate 是四个在 Java Web 开发中广泛使用的开源框架。这个项目将它们集成为一个整体,为初学者提供了一个学习和理解这些技术如何协同工作的实例。 **Struts2** 是一个基于 Model-...

    Spring与iBATIS的集成

    Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...

    struts2,hibernate,spring,ibatis面试合集

    Struts2、Hibernate、Spring和iBatis是Java开发中非常重要的四个框架,它们在企业级应用开发中占据着核心地位。以下是对这些框架的详细解释和相关知识点: 1. **Struts2**:Struts2是一个基于MVC(Model-View-...

    夏昕的3部开发手册(Hibernate Ibatis Spring)

    《夏昕的3部开发手册》是一套针对Java开发者的重要参考资料,主要涵盖了三大热门框架——Hibernate、Ibatis和Spring的深度解析。这三者在Java企业级应用开发中扮演着核心角色,是构建高效、可扩展后端服务的基石。 ...

    Flex4+Spring+ibatis实战系列教程

    本系列教程将会逐步指导初学者如何使用 Flex4、BlazeDS、Spring 和 iBATIS 构建四种不同的架构方法。学习这些技术不仅可以提升你对 RIA 开发的理解,还能帮助你掌握灵活的前端与后端交互技巧,为构建高性能、用户...

    springMVC+ibatis+hibernate+spring+boostrap框架的lib包

    Spring MVC、iBatis、Hibernate、Spring 和 Bootstrap 是在 Web 开发中广泛使用的五种技术。下面将分别介绍这些框架的核心概念、功能以及它们如何协同工作。 **Spring MVC** Spring MVC 是 Spring 框架的一个模块,...

    SQL&Ibatis学习 ppt

    6. 集成与配置:学习如何将Ibatis框架集成到Spring等其他框架中,以及相关的配置和依赖注入。 通过上述内容,初学者可以逐步掌握SQL和Ibatis的基本用法,为实际开发中的数据操作打下坚实的基础。在实践中不断学习和...

    struts1+spring+hibernate+ibatis集成

    Struts1、Spring、Hibernate和iBatis是Java Web开发中的四大框架,它们共同构建了一个强大的后端架构,用于处理复杂的企业级应用。这个集成方案旨在优化开发流程,提高代码的可维护性和可扩展性。 Struts1是MVC...

    SQL&Ibatis学习.ppt

    sql讲解详细、实用、有用例、带源码。

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 &lt;bean id="sqlMapClient" class="org.spring...

    flex spring

    Flex Spring Ibatis 整合详解 在开发Java Web应用程序时,使用Spring框架作为基础架构,Ibatis作为持久层解决方案,而Flex作为前端展示技术,能够构建出高效、灵活且易于维护的应用。本篇文章将深入探讨如何将这三...

    开发指南(spring,hibernate,ibatis,webwork)

    【开发指南(spring,hibernate,ibatis,webwork)】 在软件开发领域,Spring、Hibernate、iBatis和WebWork是四个重要的框架,它们分别在不同的层面为开发者提供了便利。下面将对这些框架进行详细阐述。 1. **Spring...

Global site tag (gtag.js) - Google Analytics