开发环境:
Eclipse For JavaEE ,FlashBuilder4,Tomcat6.0
开发步骤:
1. 新建web工程xslt,加入以下文件:
ConnectionFactory.java
package com;
import java.sql.*; //调用SQL包
public class ConnectionFactory {
private static ConnectionFactory ref = new ConnectionFactory();
// 连接mysql数据库, database : test user : root password : 1272107226
private ConnectionFactory()
{
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e)
{
System.out.println("ERROR: exception loading driver class");
}
}
public static Connection getConnection() throws SQLException{
String url = new String ("jdbc:mysql://localhost:3306/test?user=root&password=root");
return DriverManager.getConnection(url);
}
public static void close(ResultSet rs)
{
try{
rs.close();
}catch(Exception ignored){}
}
public static void close(Statement stmt)
{
try{
stmt.close();
}catch(Exception ignored){}
}
public static void close(Connection conn)
{
try{
conn.close();
}catch(Exception ignored){}
}
}
新建DataServiceImpl.java
package com;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import com.ConnectionFactory;
public class DataServiceImpl {
String sql; // 定义类型
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public DataServiceImpl(){
}
public List<NoticeInfo> getNotices(){
ArrayList<NoticeInfo> noticeList = new ArrayList<NoticeInfo>();
try{
conn = ConnectionFactory.getConnection();
stmt = conn.createStatement();
String sql = "select userid, username, contents, dates from gbook ";
System.out.println("this is =============>" + sql);
System.out.println("connect to db is successful~~~");
rs = stmt.executeQuery(sql);
while(rs.next()){
NoticeInfo temp = new NoticeInfo();
temp.setUserid(rs.getInt("userid"));
temp.setUsername(rs.getString("username"));
temp.setContents(rs.getString("contents"));
temp.setDates(rs.getString("dates"));
noticeList.add(temp);
}
System.out.println(noticeList.size() + " 条数据!");
return noticeList;
}catch(SQLException e){
e.printStackTrace();
return null;
}
}
public String getHello(String name){
return "hi " + name;
}
}
新建NoticeInfo .java
package com;
import java.io.Serializable;
public class NoticeInfo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int userid;
private String username;
private String contents;
private String dates;
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public String getDates() {
return dates;
}
public void setDates(String dates) {
this.dates = dates;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
2 .下载blazeds.rar文件,这里有有一些lib和flex所需要的XML文件,解压后将如图文件夹复制到原web项目的WEB-INF下面
新建flex项目HelloWorld,如图将项目位置选择tomcat中的xslt
3. 在FlashBuilder4中新建flex项目操作如图:
4. 开发flex代码:
在flex文件夹的remoting-config中加入java接口类配制
<destination id="UserDao">
<properties>
<source>com.DataServiceImpl</source>
</properties>
</destination>
5. 在项目的src中新建如下文件:
NoticeInfo.as文件
// ActionScript file
package com.yeeach
{
[Bindable]
[RemoteClass(alias="com.NoticeInfo")]
public class NoticeInfo
{
public var userid:int;
public var username:String;
public var contents:String;
public var dates:Date;
}
}
HelloWorld.mxml文件
<?xml version="1.0" encoding="utf-8"?>
<!--自动生成头信息-->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="821" height="674"
preloaderChromeColor="#9E4040" backgroundColor="#674F4F">
<fx:Style source="helloword.css"/>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 定义操作接口名-->
<s:RemoteObject id="UserDao" destination="UserDao">
<!--name为UserDao中的方法名,result指定方法执行后处理返回值的访求 ,fault指定出错时执行的方法-->
<s:method showBusyCursor="true" name="getNotices" result="changeDate(event)" fault="UserDao_faultHandler(event)"/>
</s:RemoteObject>
</fx:Declarations>
<!--按钮的点击事件-->
<mx:Button x="10" y="139" label="获得list" click="remotingList(event)" fontSize="12"/>
<!--表格控件 ,将list中的数据显示在些处-->
<mx:DataGrid x="10" y="164" width="714" height="328" id="myDG">
<mx:columns>
<fx:Array>
<!--dataField为对象的属性-->
<mx:DataGridColumn headerText="用户ID" dataField="userid"/>
<mx:DataGridColumn headerText="用户名" dataField="username"/>
<mx:DataGridColumn headerText="说明" dataField="contents"/>
<mx:DataGridColumn headerText="日期" dataField="dates"/>
</fx:Array>
</mx:columns>
</mx:DataGrid>
<fx:Script>
<![CDATA[
//自定义与java相同结构名字为NoticeInfo.as
import com.yeeach.NoticeInfo;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.AbstractEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ArrayUtil;
//定义一个数组
public function changeDate(event:ResultEvent):void
{
if(event.result!=null){
//将结果放入表格中
myDG.dataProvider = event.result;
}else{
Alert.show("没有找到相关任务信息");
}
}
protected function UserDao_faultHandler(event:FaultEvent):void
{
Alert.show(event.fault.toString());
}
public function remotingList(event:Event):void{
UserDao.getNotices();
}
]]>
</fx:Script>
</s:Application>
这里就大功告成了,启动tomcat运行就可以了
如果如图: