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-Workspace\FlexReadMysql2\WebRoot)。待到在MyEclipse中执行部署操作后,Tomcat目录下的内容会自动更新(例如, C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\FlexReadMysql2)。
cy163注:原文缺少重要内容--把MySQL驱动引入到此Web Project中,方法是:(1)在系统变量ClassPath中添加驱动软件的全路径(例如, D:\download\mysql-connector-java-5.1.6-bin.jar) (2)在MyEclipse中,通过 Java Build Path | Libraries | Add External JARs 把驱动程序添加到Web Project中。
aaarticlea/png;base64,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" alt="" width="501" height="361" />
cy163注:原文中缺少以下内容:在创建 Flex Project时,需要做如下设置。但不需要选择"Use default location for local LiveCycle Data Service server"
3 编写所需的java方法
ConnectionHelper.java
- ConnextionHelper.java
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class ConnectionHelper
- {
- private String url;
- private static ConnectionHelper instance;
- private ConnectionHelper()
- {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- url = "jdbc:MySQL://localhost/test";
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Connection getConnection() throws SQLException {
- if (instance == null) {
- instance = new ConnectionHelper();
- }
- try {
- return DriverManager.getConnection(instance.url,"root","root");
- } catch (SQLException e) {
- throw e;
- }
- }
- public static void close(Connection connection)
- {
- try {
- if (connection != null) {
- connection.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
Admin.java
Java代码
- Admin.java
- import java.io.Serializable;
- public class Admin implements Serializable {
- static final long serialVersionUID = 103844514947365244L;
- private int id;
- private String username;
- private String userpwd;
- public Admin() {
- }
- public Admin(int id,String username,String userpwd) {
- this.id = id;
- this.username=username;
- this.userpwd=userpwd;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getUserpwd() {
- return userpwd;
- }
- public void setUserpwd(String userpwd) {
- this.userpwd = userpwd;
- }
- }
AdminService.java
Java代码
- AdminService.java
- import java.util.ArrayList;
- import java.util.List;
- import java.sql.*;
- import flex.jie.ConnectionHelper;
- import flex.jie.DAOException;
- public class AdminService {
- public List getAdmins() throws DAOException {
- List list = new ArrayList();
- Connection c = null;
- try {
- c = ConnectionHelper.getConnection();
- Statement s = c.createStatement();
- ResultSet rs = s.executeQuery("SELECT * FROM admin ORDER BY id");
- while (rs.next()) {
- list.add(new Admin(rs.getInt("id"),
- rs.getString("username"),
- rs.getString("userpwd")));
- }
- } catch (SQLException e) {
- e.printStackTrace();
- throw new DAOException(e);
- } finally {
- ConnectionHelper.close(c);
- }
- return list;
- }
- }
重要一步:
在remoting-config.xml文件中 添加(source处根据实际的建包名填写
Mxml代码
- <destination id="admin">
- <properties>
- <source>flex.jie.user.AdminService</source>
- </properties>
- </destination>
至此。myEclipse工程中所需代码以及配置已经完成。将工程部署并发布在Tomacat下面。
接下来,flex端的步骤。
首先 新建Flex Project ,输入工程名。在server technology处选择J2EE,点击next
填写刚刚发布在tomcat下的目录名。点击完成。
在默认的mxml中的代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">
- <mx:RemoteObject id="srv" destination="admin" endpoint="http://localhost:8080/FlexReadMysql2/messagebroker/amf" />
- <mx:DataGrid dataProvider="{srv.getAdmins.lastResult}" width="100%" height="100%"/>
- <mx:Button label="Get Data" click="srv.getAdmins()"/>
- </mx:Application>
在tomcat启动的前提下,点击运行即可。
或者想显示指定的列。只需要稍作修改即可
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF" creationComplete="srv.getAdmins()">
- <mx:Script>
- <![CDATA[
- import mx.rpc.events.ResultEvent;
- import mx.collections.ArrayCollection;
- [Bindable]public var ad:ArrayCollection;
- private function adminHandler(event:ResultEvent):void
- {
- ad= event.result as ArrayCollection
- }
- ]]>
- </mx:Script>
- <mx:RemoteObject id="srv" destination="admin">
- <mx:method name="getAdmins" result="adminHandler(event)"/>
- </mx:RemoteObject>
- <mx:DataGrid dataProvider="{ad}">
- <mx:columns>
- <mx:DataGridColumn headerText="用户名" dataField="username"/>
- <mx:DataGridColumn headerText="密码" dataField="userpwd"/>
- </mx:columns>
- </mx:DataGrid>
- </mx:Application>
显示为形式可为:
说明:此时的destination对应remote-config.xml中的id号 。建立连接。从而flex端所用到的java方法可以找到。返回数据库中所建表的信息
DAOException.java
- DAOException.java
- public class DAOException extends RuntimeException
- {
- static final long serialVersionUID = -1881205326938716446L;
- public DAOException(String message)
- {
- super(message);
- }
- public DAOException(Throwable cause)
- {
- super(cause);
- }
- public DAOException(String message, Throwable cause)
- {
- super(message, cause);
- }
- }
以上是数据库连接所需方法。然后根据数据库中表的结构写下所需的方法类。