flex与mysql交互
2010年07月04日
这个小例子通过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下)
3 编写所需的java方法 Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=ConnextionHelper.java%0Aimpor t%20java.sql.Connection%3B%0Aimport%20java.sql.Driv erManager%3B%0Aimport%20java.sql.SQLException%3B%0A %0Apublic%20class%20ConnectionHelper%0A%7B%0A%20%20 %20%20private%20String%20url%3B%0A%0A%20%20%20%20pr ivate%20static%20ConnectionHelper%20instance%3B%0A% 0A%20%20%20%20private%20ConnectionHelper()%0A%20%20 %20%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20 %20%20%20%20%20%20%20%20%20%20%20Class.forName(%22c om.mysql.jdbc.Driver%22)%3B%0A%20%20%20%20%20%20%20 %20%20%20%20%20url%20%3D%20%22jdbc%3AMySQL%3A%2F%2F localhost%2Ftest%22%3B%0A%20%20%20%20%20%20%20%20%2 0%20%20%20%0A%20%20%20%20%20%20%20%20%7D%20catch%20 (Exception%20e)%20%7B%0A%20%20%20%20%20%20%20%20%20 %20%20%20e.printStackTrace()%3B%0A%20%20%20%20%20%2 0%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20publi c%20static%20Connection%20getConnection()%20throws% 20SQLException%20%7B%0A%20%20%20%20%20%20%20%20if%2 0(instance%20%3D%3D%20null)%20%7B%0A%20%20%20%20%20 %20%20%20%20%20%20%20instance%20%3D%20new%20Connect ionHelper()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20% 20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20% 20%20%20%20%20%20return%20DriverManager.getConnecti on(instance.url%2C%22root%22%2C%22root%22)%3B%0A%20 %20%20%20%20%20%20%20%7D%20catch%20(SQLException%20 e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20thro w%20e%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20% 20%7D%0A%20%20%20%20%0A%20%20%20%20public%20static% 20void%20close(Connection%20connection)%0A%20%20%20 %20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20 %20%20%20%20%20%20%20%20%20%20if%20(connection%20!% 3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20%20connection.close()%3B%0A%20%20%20%2 0%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2 0%20%7D%20catch%20(SQLException%20e)%20%7B%0A%20%20 %20%20%20%20%20%20%20%20%20%20e.printStackTrace()%3 B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0 A%7D%0A">
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();
}
} }
Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=DAOException.java%0Apublic%20 class%20DAOException%20extends%20RuntimeException%0 A%7B%0A%20%20%20%20static%20final%20long%20serialVe rsionUID%20%3D%20-1881205326938716446L%3B%0A%0A%20% 20%20%20public%20DAOException(String%20message)%0A% 20%20%20%20%7B%0A%20%20%20%20%20%20%20%20super(mess age)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%2 0DAOException(Throwable%20cause)%0A%20%20%20%20%7B% 0A%20%20%20%20%20%20%20%20super(cause)%3B%0A%20%20% 20%20%7D%0A%0A%20%20%20%20public%20DAOException(Str ing%20message%2C%20Throwable%20cause)%0A%20%20%20%2 0%7B%0A%20%20%20%20%20%20%20%20super(message%2C%20c ause)%3B%0A%20%20%20%20%7D%0A%0A%7D%0A">
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);
} }
以上是数据库连接所需方法。然后根据数据库中表的结构写下所需的方法类。
Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=Admin.java%0Aimport%20java.io .Serializable%3B%0A%0Apublic%20class%20Admin%20impl ements%20Serializable%20%7B%0A%0A%20%20%20%20static %20final%20long%20serialVersionUID%20%3D%2010384451 4947365244L%3B%0A%20%20%20%20%0A%20%20%20%20private %20int%20id%3B%0A%20%20%20%20private%20String%20use rname%3B%0A%20%20%20%20private%20String%20userpwd%3 B%0A%20%20%20%0A%20%20%20%20%0A%20%20%20%20public%2 0Admin()%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20% 20%20%7D%0A%20%20%20%20%0A%20%20%20%20public%20Admi n(int%20id%2CString%20username%2CString%20userpwd)% 20%7B%0A%20%20%20%20%20%20%20%20this.id%20%3D%20id% 3B%0A%20%20%20%20%20%20%20%20this.username%3Duserna me%3B%0A%20%20%20%20%20%20%20%20this.userpwd%3Duser pwd%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20 int%20getId()%20%7B%0A%20%20%20%20%20%20%20%20retur n%20id%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public %20void%20setId(int%20id)%20%7B%0A%20%20%20%20%20%2 0%20%20this.id%20%3D%20id%3B%0A%20%20%20%20%7D%0A%0 A%20%20%20%20public%20String%20getUsername()%20%7B% 0A%20%20%20%20%20%20%20%20return%20username%3B%0A%2 0%20%20%20%7D%0A%0A%20%20%20%20public%20void%20setU sername(String%20username)%20%7B%0A%20%20%20%20%20% 20%20%20this.username%20%3D%20username%3B%0A%20%20% 20%20%7D%0A%0A%20%20%20%20public%20String%20getUser pwd()%20%7B%0A%20%20%20%20%20%20%20%20return%20user pwd%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20 void%20setUserpwd(String%20userpwd)%20%7B%0A%20%20% 20%20%20%20%20%20this.userpwd%20%3D%20userpwd%3B%0A %20%20%20%20%7D%0A%0A%7D%0A">
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;
} }
Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=AdminService.java%0Aimport%20 java.util.ArrayList%3B%0Aimport%20java.util.List%3B %0Aimport%20java.sql.*%3B%0A%0Aimport%20flex.jie.Co nnectionHelper%3B%0Aimport%20flex.jie.DAOException% 3B%0A%0Apublic%20class%20AdminService%20%7B%0A%0A%2 0%20%20%20public%20List%20getAdmins()%20throws%20DA OException%20%7B%0A%0A%20%20%20%20%20%20%20%20List% 20list%20%3D%20new%20ArrayList()%3B%0A%20%20%20%20% 20%20%20%20Connection%20c%20%3D%20null%3B%0A%0A%20% 20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20% 20%20%20%20%20%20c%20%3D%20ConnectionHelper.getConn ection()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20S tatement%20s%20%3D%20c.createStatement()%3B%0A%20%2 0%20%20%20%20%20%20%20%20%20%20ResultSet%20rs%20%3D %20s.executeQuery(%22SELECT%20*%20FROM%20admin%20OR DER%20BY%20id%22)%3B%0A%20%20%20%20%20%20%20%20%20% 20%20%20while%20(rs.next())%20%7B%0A%20%20%20%20%20 %20%20%20%20%20%20%20%20%20%20%20list.add(new%20Adm in(rs.getInt(%22id%22)%2C%0A%20%20%20%20%20%20%20%2 0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rs .getString(%22username%22)%2C%0A%20%20%20%20%20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20% 20rs.getString(%22userpwd%22)))%3B%0A%20%20%20%20%2 0%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%2 0%7D%20catch%20(SQLException%20e)%20%7B%0A%20%20%20 %20%20%20%20%20%20%20%20%20e.printStackTrace()%3B%0 A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20 DAOException(e)%3B%0A%20%20%20%20%20%20%20%20%7D%20 finally%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%2 0ConnectionHelper.close(c)%3B%0A%20%20%20%20%20%20% 20%20%7D%0A%20%20%20%20%20%20%20%20return%20list%3B %0A%0A%20%20%20%20%7D%0A%7D%0A">
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处根据实际的建包名填写) Xml代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3Cdestination%20id%3D%22admi n%22%3E%0A%20%20%20%20%20%20%20%20%3Cproperties%3E% 0A%20%20%20%20%20%20%20%20%20%20%20%20%3Csource%3Ef lex.jie.user.AdminService%3C%2Fsource%3E%0A%20%20%2 0%20%20%20%20%20%3C%2Fproperties%3E%0A%3C%2Fdestina tion%3E%0A">
至此。myEclipse工程中所需代码以及配置已经完成。将工程部署并发布在Tomacat下面。
接下来,flex端的步骤。
首先 新建Flex Project ,输入工程名。在server technology处选择J2EE,点击next
填写刚刚发布在tomcat下的目录名。点击完成。
在默认的mxml中的代码如下: Mxml代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0% 22%20encoding%3D%22utf-8%22%3F%3E%0A%3Cmx%3AApplica tion%20xmlns%3Amx%3D%22http%3A%2F%2Fwww.adobe.com%2 F2006%2Fmxml%22%20backgroundColor%3D%22%23FFFFFF%22 %3E%0A%20%20%20%20%0A%20%20%20%20%3Cmx%3ARemoteObje ct%20id%3D%22srv%22%20destination%3D%22admin%22%2F% 3E%0A%20%20%20%20%0A%20%20%20%20%3Cmx%3ADataGrid%20 dataProvider%3D%22%7Bsrv.getAdmins.lastResult%7D%22 %20width%3D%22100%25%22%20height%3D%22100%25%22%2F% 3E%20%0A%0A%20%20%20%20%3Cmx%3AButton%20label%3D%22 Get%20Data%22%20click%3D%22srv.getAdmins()%22%2F%3E %20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%3C%2Fmx% 3AApplication%3E%26nbsp%3B">
在tomcat启动的前提下,点击运行即可。
或者想显示指定的列。只需要稍作修改即可 Mxml代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0% 22%20encoding%3D%22utf-8%22%3F%3E%0A%3Cmx%3AApplica tion%20xmlns%3Amx%3D%22http%3A%2F%2Fwww.adobe.com%2 F2006%2Fmxml%22%20backgroundColor%3D%22%23FFFFFF%22 %20creationComplete%3D%22srv.getAdmins()%22%3E%0A%2 0%20%3Cmx%3AScript%3E%0A%20%20%20%20%20%20%3C!%5BCD ATA%5B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20imp ort%20mx.rpc.events.ResultEvent%3B%20%20%20%20%0A%2 0%20%20%20%20%20import%20mx.collections.ArrayCollec tion%3B%0A%20%20%20%20%20%20%5BBindable%5Dpublic%20 var%20ad%3AArrayCollection%3B%0A%20%20%20%20%20%20% 20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20private %20function%20adminHandler(event%3AResultEvent)%3Av oid%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ad%3D% 20event.result%20as%20ArrayCollection%0A%20%20%20%2 0%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%2 0%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%5 D%5D%3E%0A%20%20%3C%2Fmx%3AScript%3E%20%20%0A%20%20 %20%3Cmx%3ARemoteObject%20id%3D%22srv%22%20destinat ion%3D%22admin%22%3E%0A%20%20%20%20%20%20%20%20%3Cm x%3Amethod%20name%3D%22getAdmins%22%20result%3D%22a dminHandler(event)%22%2F%3E%0A%20%20%20%20%3C%2Fmx% 3ARemoteObject%3E%0A%20%20%20%20%3Cmx%3ADataGrid%20 dataProvider%3D%22%7Bad%7D%22%3E%0A%20%20%20%20%20% 20%20%20%3Cmx%3Acolumns%3E%0A%20%20%20%20%20%20%20% 20%20%20%20%20%3Cmx%3ADataGridColumn%20headerText%3 D%22%E7%94%A8%E6%88%B7%E5%90%8D%22%20dataField%3D%2 2username%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20 %20%20%3Cmx%3ADataGridColumn%20headerText%3D%22%E5% AF%86%E7%A0%81%22%20dataField%3D%22userpwd%22%2F%3E %0A%20%20%20%20%20%20%20%20%3C%2Fmx%3Acolumns%3E%0A %20%20%20%20%3C%2Fmx%3ADataGrid%3E%0A%20%20%20%20%2 0%20%20%20%0A%3C%2Fmx%3AApplication%3E%0A">
显示为形式可为:
说明:此时的destination对应remote-config.xml中的id号 。建立连接。从而flex端所用到的java方法可以找到。返回数据库中所建表的信息
2010年07月04日
这个小例子通过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下)
3 编写所需的java方法 Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=ConnextionHelper.java%0Aimpor t%20java.sql.Connection%3B%0Aimport%20java.sql.Driv erManager%3B%0Aimport%20java.sql.SQLException%3B%0A %0Apublic%20class%20ConnectionHelper%0A%7B%0A%20%20 %20%20private%20String%20url%3B%0A%0A%20%20%20%20pr ivate%20static%20ConnectionHelper%20instance%3B%0A% 0A%20%20%20%20private%20ConnectionHelper()%0A%20%20 %20%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20 %20%20%20%20%20%20%20%20%20%20%20Class.forName(%22c om.mysql.jdbc.Driver%22)%3B%0A%20%20%20%20%20%20%20 %20%20%20%20%20url%20%3D%20%22jdbc%3AMySQL%3A%2F%2F localhost%2Ftest%22%3B%0A%20%20%20%20%20%20%20%20%2 0%20%20%20%0A%20%20%20%20%20%20%20%20%7D%20catch%20 (Exception%20e)%20%7B%0A%20%20%20%20%20%20%20%20%20 %20%20%20e.printStackTrace()%3B%0A%20%20%20%20%20%2 0%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20publi c%20static%20Connection%20getConnection()%20throws% 20SQLException%20%7B%0A%20%20%20%20%20%20%20%20if%2 0(instance%20%3D%3D%20null)%20%7B%0A%20%20%20%20%20 %20%20%20%20%20%20%20instance%20%3D%20new%20Connect ionHelper()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20% 20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20% 20%20%20%20%20%20return%20DriverManager.getConnecti on(instance.url%2C%22root%22%2C%22root%22)%3B%0A%20 %20%20%20%20%20%20%20%7D%20catch%20(SQLException%20 e)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20thro w%20e%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20% 20%7D%0A%20%20%20%20%0A%20%20%20%20public%20static% 20void%20close(Connection%20connection)%0A%20%20%20 %20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20 %20%20%20%20%20%20%20%20%20%20if%20(connection%20!% 3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20%20connection.close()%3B%0A%20%20%20%2 0%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2 0%20%7D%20catch%20(SQLException%20e)%20%7B%0A%20%20 %20%20%20%20%20%20%20%20%20%20e.printStackTrace()%3 B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0 A%7D%0A">
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();
}
} }
Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=DAOException.java%0Apublic%20 class%20DAOException%20extends%20RuntimeException%0 A%7B%0A%20%20%20%20static%20final%20long%20serialVe rsionUID%20%3D%20-1881205326938716446L%3B%0A%0A%20% 20%20%20public%20DAOException(String%20message)%0A% 20%20%20%20%7B%0A%20%20%20%20%20%20%20%20super(mess age)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%2 0DAOException(Throwable%20cause)%0A%20%20%20%20%7B% 0A%20%20%20%20%20%20%20%20super(cause)%3B%0A%20%20% 20%20%7D%0A%0A%20%20%20%20public%20DAOException(Str ing%20message%2C%20Throwable%20cause)%0A%20%20%20%2 0%7B%0A%20%20%20%20%20%20%20%20super(message%2C%20c ause)%3B%0A%20%20%20%20%7D%0A%0A%7D%0A">
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);
} }
以上是数据库连接所需方法。然后根据数据库中表的结构写下所需的方法类。
Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=Admin.java%0Aimport%20java.io .Serializable%3B%0A%0Apublic%20class%20Admin%20impl ements%20Serializable%20%7B%0A%0A%20%20%20%20static %20final%20long%20serialVersionUID%20%3D%2010384451 4947365244L%3B%0A%20%20%20%20%0A%20%20%20%20private %20int%20id%3B%0A%20%20%20%20private%20String%20use rname%3B%0A%20%20%20%20private%20String%20userpwd%3 B%0A%20%20%20%0A%20%20%20%20%0A%20%20%20%20public%2 0Admin()%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20% 20%20%7D%0A%20%20%20%20%0A%20%20%20%20public%20Admi n(int%20id%2CString%20username%2CString%20userpwd)% 20%7B%0A%20%20%20%20%20%20%20%20this.id%20%3D%20id% 3B%0A%20%20%20%20%20%20%20%20this.username%3Duserna me%3B%0A%20%20%20%20%20%20%20%20this.userpwd%3Duser pwd%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20 int%20getId()%20%7B%0A%20%20%20%20%20%20%20%20retur n%20id%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public %20void%20setId(int%20id)%20%7B%0A%20%20%20%20%20%2 0%20%20this.id%20%3D%20id%3B%0A%20%20%20%20%7D%0A%0 A%20%20%20%20public%20String%20getUsername()%20%7B% 0A%20%20%20%20%20%20%20%20return%20username%3B%0A%2 0%20%20%20%7D%0A%0A%20%20%20%20public%20void%20setU sername(String%20username)%20%7B%0A%20%20%20%20%20% 20%20%20this.username%20%3D%20username%3B%0A%20%20% 20%20%7D%0A%0A%20%20%20%20public%20String%20getUser pwd()%20%7B%0A%20%20%20%20%20%20%20%20return%20user pwd%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20 void%20setUserpwd(String%20userpwd)%20%7B%0A%20%20% 20%20%20%20%20%20this.userpwd%20%3D%20userpwd%3B%0A %20%20%20%20%7D%0A%0A%7D%0A">
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;
} }
Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=AdminService.java%0Aimport%20 java.util.ArrayList%3B%0Aimport%20java.util.List%3B %0Aimport%20java.sql.*%3B%0A%0Aimport%20flex.jie.Co nnectionHelper%3B%0Aimport%20flex.jie.DAOException% 3B%0A%0Apublic%20class%20AdminService%20%7B%0A%0A%2 0%20%20%20public%20List%20getAdmins()%20throws%20DA OException%20%7B%0A%0A%20%20%20%20%20%20%20%20List% 20list%20%3D%20new%20ArrayList()%3B%0A%20%20%20%20% 20%20%20%20Connection%20c%20%3D%20null%3B%0A%0A%20% 20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20% 20%20%20%20%20%20c%20%3D%20ConnectionHelper.getConn ection()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20S tatement%20s%20%3D%20c.createStatement()%3B%0A%20%2 0%20%20%20%20%20%20%20%20%20%20ResultSet%20rs%20%3D %20s.executeQuery(%22SELECT%20*%20FROM%20admin%20OR DER%20BY%20id%22)%3B%0A%20%20%20%20%20%20%20%20%20% 20%20%20while%20(rs.next())%20%7B%0A%20%20%20%20%20 %20%20%20%20%20%20%20%20%20%20%20list.add(new%20Adm in(rs.getInt(%22id%22)%2C%0A%20%20%20%20%20%20%20%2 0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rs .getString(%22username%22)%2C%0A%20%20%20%20%20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20% 20rs.getString(%22userpwd%22)))%3B%0A%20%20%20%20%2 0%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%2 0%7D%20catch%20(SQLException%20e)%20%7B%0A%20%20%20 %20%20%20%20%20%20%20%20%20e.printStackTrace()%3B%0 A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20 DAOException(e)%3B%0A%20%20%20%20%20%20%20%20%7D%20 finally%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%2 0ConnectionHelper.close(c)%3B%0A%20%20%20%20%20%20% 20%20%7D%0A%20%20%20%20%20%20%20%20return%20list%3B %0A%0A%20%20%20%20%7D%0A%7D%0A">
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处根据实际的建包名填写) Xml代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3Cdestination%20id%3D%22admi n%22%3E%0A%20%20%20%20%20%20%20%20%3Cproperties%3E% 0A%20%20%20%20%20%20%20%20%20%20%20%20%3Csource%3Ef lex.jie.user.AdminService%3C%2Fsource%3E%0A%20%20%2 0%20%20%20%20%20%3C%2Fproperties%3E%0A%3C%2Fdestina tion%3E%0A">
至此。myEclipse工程中所需代码以及配置已经完成。将工程部署并发布在Tomacat下面。
接下来,flex端的步骤。
首先 新建Flex Project ,输入工程名。在server technology处选择J2EE,点击next
填写刚刚发布在tomcat下的目录名。点击完成。
在默认的mxml中的代码如下: Mxml代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0% 22%20encoding%3D%22utf-8%22%3F%3E%0A%3Cmx%3AApplica tion%20xmlns%3Amx%3D%22http%3A%2F%2Fwww.adobe.com%2 F2006%2Fmxml%22%20backgroundColor%3D%22%23FFFFFF%22 %3E%0A%20%20%20%20%0A%20%20%20%20%3Cmx%3ARemoteObje ct%20id%3D%22srv%22%20destination%3D%22admin%22%2F% 3E%0A%20%20%20%20%0A%20%20%20%20%3Cmx%3ADataGrid%20 dataProvider%3D%22%7Bsrv.getAdmins.lastResult%7D%22 %20width%3D%22100%25%22%20height%3D%22100%25%22%2F% 3E%20%0A%0A%20%20%20%20%3Cmx%3AButton%20label%3D%22 Get%20Data%22%20click%3D%22srv.getAdmins()%22%2F%3E %20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%3C%2Fmx% 3AApplication%3E%26nbsp%3B">
在tomcat启动的前提下,点击运行即可。
或者想显示指定的列。只需要稍作修改即可 Mxml代码 type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhigh lighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0% 22%20encoding%3D%22utf-8%22%3F%3E%0A%3Cmx%3AApplica tion%20xmlns%3Amx%3D%22http%3A%2F%2Fwww.adobe.com%2 F2006%2Fmxml%22%20backgroundColor%3D%22%23FFFFFF%22 %20creationComplete%3D%22srv.getAdmins()%22%3E%0A%2 0%20%3Cmx%3AScript%3E%0A%20%20%20%20%20%20%3C!%5BCD ATA%5B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20imp ort%20mx.rpc.events.ResultEvent%3B%20%20%20%20%0A%2 0%20%20%20%20%20import%20mx.collections.ArrayCollec tion%3B%0A%20%20%20%20%20%20%5BBindable%5Dpublic%20 var%20ad%3AArrayCollection%3B%0A%20%20%20%20%20%20% 20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20private %20function%20adminHandler(event%3AResultEvent)%3Av oid%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ad%3D% 20event.result%20as%20ArrayCollection%0A%20%20%20%2 0%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%2 0%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%5 D%5D%3E%0A%20%20%3C%2Fmx%3AScript%3E%20%20%0A%20%20 %20%3Cmx%3ARemoteObject%20id%3D%22srv%22%20destinat ion%3D%22admin%22%3E%0A%20%20%20%20%20%20%20%20%3Cm x%3Amethod%20name%3D%22getAdmins%22%20result%3D%22a dminHandler(event)%22%2F%3E%0A%20%20%20%20%3C%2Fmx% 3ARemoteObject%3E%0A%20%20%20%20%3Cmx%3ADataGrid%20 dataProvider%3D%22%7Bad%7D%22%3E%0A%20%20%20%20%20% 20%20%20%3Cmx%3Acolumns%3E%0A%20%20%20%20%20%20%20% 20%20%20%20%20%3Cmx%3ADataGridColumn%20headerText%3 D%22%E7%94%A8%E6%88%B7%E5%90%8D%22%20dataField%3D%2 2username%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20 %20%20%3Cmx%3ADataGridColumn%20headerText%3D%22%E5% AF%86%E7%A0%81%22%20dataField%3D%22userpwd%22%2F%3E %0A%20%20%20%20%20%20%20%20%3C%2Fmx%3Acolumns%3E%0A %20%20%20%20%3C%2Fmx%3ADataGrid%3E%0A%20%20%20%20%2 0%20%20%20%0A%3C%2Fmx%3AApplication%3E%0A">
显示为形式可为:
说明:此时的destination对应remote-config.xml中的id号 。建立连接。从而flex端所用到的java方法可以找到。返回数据库中所建表的信息