zoukankan      html  css  js  c++  java
  • Flex+blazeds实现与mySQL数据库的连接(已成功实现此文的例子)

    http://bdk82924.iteye.com/blog/1067285

    几个下载地址

    blazeds_turnkey_3-0-0-544.zip

    下载地址:http://download.macromedia.com/pub/opensource/blazeds/blazeds_turnkey_3-0-0-544.zip

    这个小例子通过remoteobject的通讯方法。实现flex与mySQL数据库的交互。

    BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。使用Blazeds可以很方便的连接java后台,同时他也提供HttpService、webservice方式,不过在 Blazeds中可以通过配置文件中对其进行设置的,这样提高了应用的灵活性。其中最重要的还是RemotingObject技术,他可以直接远程远程调 用java后台提供的公共接口,使其效率大大提升,一般是采用HTTPService方式的10倍左右。 

    1  使用mySQL中的test数据库,建表名为admin.表中字段为:  id username userpwd
    (最终目的:将数据库表中的记录最终显示在flex端的DateGrid组件中显示出来)
    2  建立myEclipse的工程。新建->web project 输入工程名后。需要将事先下载的Blazeds包粘贴至工程目录下。并且将mysql的驱动放到工程目录lib的文件夹下
    (我使用版本blazeds_turnkey_3-0-0-544.zip。将解压后的文件夹中的blazeds.war改成rar的拓展名,并解压,将得到的META-INF和WEB-INF两个文件夹拷入刚建成的工程下webroot下)

    cy163注:把META-INF和WEB-INF两个文件夹拷到MyEclipse的Workspace目录下的该示例Web Project目录下的webroot下(例如,D:MyEclipse-WorkspaceFlexReadMysql2WebRoot)。待到在MyEclipse中执行部署操作后,Tomcat目录下的内容会自动更新(例如, C:Program FilesApache Software FoundationTomcat 6.0webappsFlexReadMysql2)。

    cy163注:原文缺少重要内容--把MySQL驱动引入到此Web Project中,方法是:(1)在系统变量ClassPath中添加驱动软件的全路径(例如, D:downloadmysql-connector-java-5.1.6-bin.jar) (2)在MyEclipse中,通过 Java Build Path | Libraries | Add External JARs 把驱动程序添加到Web Project中。

    cy163注:原文中缺少以下内容:在创建 Flex Project时,需要做如下设置。但不需要选择"Use default location for local LiveCycle Data Service server"

    3  编写所需的java方法

    ConnectionHelper.java   

    Java代码
          0. package flex.jie;(cy163注:原文缺此行)
    1. ConnextionHelper.java  
    2. import java.sql.Connection;  
    3. import java.sql.DriverManager;  
    4. import java.sql.SQLException;  
    5.   
    6. public class ConnectionHelper  
    7. {  
    8.     private String url;  
    9.   
    10.     private static ConnectionHelper instance;  
    11.   
    12.     private ConnectionHelper()  
    13.     {  
    14.         try {  
    15.             Class.forName("com.mysql.jdbc.Driver");  
    16.             url = "jdbc:MySQL://localhost/test";  
    17.               
    18.         } catch (Exception e) {  
    19.             e.printStackTrace();  
    20.         }  
    21.     }  
    22.   
    23.     public static Connection getConnection() throws SQLException {  
    24.         if (instance == null) {  
    25.             instance = new ConnectionHelper();  
    26.         }  
    27.         try {  
    28.             return DriverManager.getConnection(instance.url,"root","root");  
    29.         } catch (SQLException e) {  
    30.             throw e;  
    31.         }  
    32.     }  
    33.       
    34.     public static void close(Connection connection)  
    35.     {  
    36.         try {  
    37.             if (connection != null) {  
    38.                 connection.close();  
    39.             }  
    40.         } catch (SQLException e) {  
    41.             e.printStackTrace();  
    42.         }  
    43.     }  
    44. }  

    Admin.java  

     Java代码  

          0. package flex.jie;(cy163注:原文缺此行)
    1. Admin.java  
    2. import java.io.Serializable;  
    3.   
    4. public class Admin implements Serializable {  
    5.   
    6.     static final long serialVersionUID = 103844514947365244L;  
    7.       
    8.     private int id;  
    9.     private String username;  
    10.     private String userpwd;  
    11.      
    12.       
    13.     public Admin() {  
    14.           
    15.     }  
    16.       
    17.     public Admin(int id,String username,String userpwd) {  
    18.         this.id = id;  
    19.         this.username=username;  
    20.         this.userpwd=userpwd;  
    21.     }  
    22.   
    23.     public int getId() {  
    24.         return id;  
    25.     }  
    26.   
    27.     public void setId(int id) {  
    28.         this.id = id;  
    29.     }  
    30.   
    31.     public String getUsername() {  
    32.         return username;  
    33.     }  
    34.   
    35.     public void setUsername(String username) {  
    36.         this.username = username;  
    37.     }  
    38.   
    39.     public String getUserpwd() {  
    40.         return userpwd;  
    41.     }  
    42.   
    43.     public void setUserpwd(String userpwd) {  
    44.         this.userpwd = userpwd;  
    45.     }  
    46.   
    47. }  

      AdminService.java   

      Java代码  

         0. package flex.jie;(cy163注:原文缺此行)
    1. AdminService.java  
    2. import java.util.ArrayList;  
    3. import java.util.List;  
    4. import java.sql.*;  
    5.   
    6. import flex.jie.ConnectionHelper;  
    7. import flex.jie.DAOException;  
    8.   
    9. public class AdminService {  
    10.   
    11.     public List getAdmins() throws DAOException {  
    12.   
    13.         List list = new ArrayList();  
    14.         Connection c = null;  
    15.   
    16.         try {  
    17.             c = ConnectionHelper.getConnection();  
    18.             Statement s = c.createStatement();  
    19.             ResultSet rs = s.executeQuery("SELECT * FROM admin ORDER BY id");  
    20.             while (rs.next()) {  
    21.                 list.add(new Admin(rs.getInt("id"),  
    22.                         rs.getString("username"),  
    23.                         rs.getString("userpwd")));  
    24.             }  
    25.         } catch (SQLException e) {  
    26.             e.printStackTrace();  
    27.             throw new DAOException(e);  
    28.         } finally {  
    29.             ConnectionHelper.close(c);  
    30.         }  
    31.         return list;  
    32.   
    33.     }  
    34. }  

     

    重要一步: 

     在remoting-config.xml文件中 添加(source处根据实际的建包名填写

     Mxml代码  

     
    1. <destination id="admin">  
    2.         <properties>  
    3.             <source>flex.jie.user.AdminService</source>  
    4.         </properties>  
    5. </destination>  

     至此。myEclipse工程中所需代码以及配置已经完成。将工程部署并发布在Tomacat下面。

    接下来,flex端的步骤。

    首先 新建Flex Project ,输入工程名。在server technology处选择J2EE,点击next

    填写刚刚发布在tomcat下的目录名。点击完成。
    在默认的mxml中的代码如下:

    Mxml代码  (红字部分由cy163添加,不添加出现 "No destination with id 'userRO' is registered with any service." faultCode="Server.Processing" faultDetail="null" 错误信息)
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">  
    3.       
    4.     <mx:RemoteObject id="srv" destination="admin" endpoint="http://localhost:8080/FlexReadMysql2/messagebroker/amf" />  
    5.       
    6.     <mx:DataGrid dataProvider="{srv.getAdmins.lastResult}" width="100%" height="100%"/>   
    7.   
    8.     <mx:Button label="Get Data" click="srv.getAdmins()"/>      
    9.           
    10. </mx:Application>&nbsp;  

     在tomcat启动的前提下,点击运行即可。

    或者想显示指定的列。只需要稍作修改即可 

    Mxml代码  
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF" creationComplete="srv.getAdmins()">  
    3.   <mx:Script>  
    4.       <![CDATA[  
    5.         
    6.       import mx.rpc.events.ResultEvent;      
    7.       import mx.collections.ArrayCollection;  
    8.       [Bindable]public var ad:ArrayCollection;  
    9.             
    10.           private function adminHandler(event:ResultEvent):void  
    11.             {  
    12.                 ad= event.result as ArrayCollection  
    13.             }      
    14.               
    15.       ]]>  
    16.   </mx:Script>    
    17.    <mx:RemoteObject id="srv" destination="admin">  
    18.         <mx:method name="getAdmins" result="adminHandler(event)"/>  
    19.     </mx:RemoteObject>  
    20.     <mx:DataGrid dataProvider="{ad}">  
    21.         <mx:columns>  
    22.             <mx:DataGridColumn headerText="用户名" dataField="username"/>  
    23.             <mx:DataGridColumn headerText="密码" dataField="userpwd"/>  
    24.         </mx:columns>  
    25.     </mx:DataGrid>  
    26.           
    27. </mx:Application>  

    显示为形式可为:

    说明:此时的destination对应remote-config.xml中的id号 。建立连接。从而flex端所用到的java方法可以找到。返回数据库中所建表的信息

     DAOException.java

    Java代码  
         0. package flex.jie;(cy163注:原文缺此行)
    1. DAOException.java  
    2. public class DAOException extends RuntimeException  
    3. {  
    4.     static final long serialVersionUID = -1881205326938716446L;  
    5.   
    6.     public DAOException(String message)  
    7.     {  
    8.         super(message);  
    9.     }  
    10.   
    11.     public DAOException(Throwable cause)  
    12.     {  
    13.         super(cause);  
    14.     }  
    15.   
    16.     public DAOException(String message, Throwable cause)  
    17.     {  
    18.         super(message, cause);  
    19.     }  
    20.   
    21. }  

       以上是数据库连接所需方法。然后根据数据库中表的结构写下所需的方法类。

  • 相关阅读:
    A 【NOIP2012 day2】疫情控制
    Leetcode(886)-可能的二分法
    判断链表是否有环
    如何判断图的连通
    图的DFS与BFS
    struct 和 class的区别
    最小生成树-kruskal算法
    Leetcode(712)-账户合并
    全局最小割
    Leetcode(29)-两数相除
  • 原文地址:https://www.cnblogs.com/cy163/p/3452147.html
Copyright © 2011-2022 走看看