1.我的配置环境为:
flexBuilder3,LCDS251,MyEclipse
5.5.1 GA+
2.安装lcds2.5.1,打开目录,里面有一个flex.war
3.关闭tomcat(如果打开在的话)
4.将flex.war拷入tomcat的webapps目录
5.重启tomcat,可以看到webapps里多了一个目录flex,这便是我们要的东西
6.可以将flex.war删除
7.将flex文件夹拷到其他地方,反正不能在webapps里面。(我也不知道为什么)
8.可以开始了,MyEclipse里新建web
Project(假设名为DemoWeb)
9.打开刚移出去的flex目录,将其中WEB-INF全部复制到工程DemoWeb的WebRoot/WEB-INFO里,点全部,
即覆盖原有文件
9.5.
flex文件夹中有一个jars目录,里面是一些java包,将里面所有jar拷到DemoWeb的WebRoot/WEB-INFO的lib目录中,
//ok,准备工作都做好了,开始可以编写代码测试下
10.flexBuilder中新建flex工程,放心,我们只用来编写mxml文件
11.编写mxml代码,我的代码是:
Java代码
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="initApp()">
import flash.events.Event;
import mx.managers.CursorManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
internal function initApp():void{
service.getDatas();
}
internal function resultHandler(evt:ResultEvent):void{
CursorManager.removeBusyCursor();
myList.labelField = "username";
myList.dataProvider = evt.result;
}
internal function faultHandler(evt:FaultEvent):void{
CursorManager.removeBusyCursor();
trace("fault:"+evt.fault);
}
internal function selectHandler(evt:Event):void{
var user:Object = myList.selectedItem;
userPanel.title = "详细信息"+user.username;
user_txt.text = user.username;
email_txt.text = user.email;
url_txt.text = user.url;
}
]]>
fault="faultHandler(event)"
showBusyCursor="true"
destination="userService">
layout="absolute" title="名册">
width="100%" height="100%"
change="selectHandler(event)">
height="199" layout="absolute"
horizontalAlign="center" verticalAlign="middle">
fontWeight="bold"/>
encoding="utf-8"?>
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="initApp()">
mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent;
internal function initApp():void{ service.getDatas(); } internal
function resultHandler(evt:ResultEvent):void{
CursorManager.removeBusyCursor(); myList.labelField = "username";
myList.dataProvider = evt.result; } internal function
faultHandler(evt:FaultEvent):void{
CursorManager.removeBusyCursor(); trace("fault:"+evt.fault); }
internal function selectHandler(evt:Event):void{ var user:Object =
myList.selectedItem; userPanel.title = "详细信息"+user.username;
user_txt.text = user.username; email_txt.text = user.email;
url_txt.text = user.url; }
]]>
fault="faultHandler(event)" showBusyCursor="true"
destination="userService">
name="getDatas" result="resultHandler(event)"/>
layout="absolute" title="名册">
height="100%" change="selectHandler(event)">
id="userPanel" x="174" y="32" width="238" height="199"
layout="absolute" horizontalAlign="center"
verticalAlign="middle">
id="user_txt" x="10" y="14" width="83"
fontWeight="bold"/>
id="email_txt" x="13" y="62" width="191"/>
width="191"/>
利用RemoteObject从服务器得到数据,并在Panel中显示出来。
12.在服务器端编写相应的代码,定义一个类DataService为前台提拱服务。类中定义方法getData(),这个方法名与RemoteObject调用的方法函数名相同。上代码:
Java代码
package com.zhan.lcds;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Collection;
public class DataService {
public Collection getDatas(){
System.out.println("come into getDatas");
ArrayList list = new ArrayList();
Map unit;
for(int i=0;i<2;i++){
unit = new HashMap();
unit.put("username", getFirst(i));
unit.put("url", getSecond(i));
unit.put("email", getThird(i));
list.add(unit);
}
System.out.println("get out of getDatas");
return list;
}
private String getFirst(int i){
if(i==1){
return "First 1 Haha";
}
else if(i==2){
return "First 2 HaHa";
}else{
return "first Error";
}
}
private String getSecond(int i){
if(i==1){
return "Second 1 Haha";
}else if(i==2){
return "Second 2 HaHa";
}else{
return "Second Error";
}
}
private String getThird(int i){
if(i==1){
return "Third 1 Haha";
}else if(i==2){
return "Third 2 HaHa";
}else{
return "Third Error";
}
}
}
package com.zhan.lcds;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Collection;
public class DataService {
public Collection getDatas(){
System.out.println("come into getDatas");
ArrayList
list = new ArrayList();
Map
unit;
for(int
i=0;i<2;i++){
unit = new
HashMap();
unit.put("username", getFirst(i));
unit.put("url", getSecond(i));
unit.put("email", getThird(i));
list.add(unit);
}
System.out.println("get out of
getDatas");
return
list;
}
private String getFirst(int i){
if(i==1){
return "First 1
Haha";
} else if(i==2){
return "First 2
HaHa";
}
else{ return "first Error";
}
}
private String
getSecond(int i){
if(i==1)
{
return "Second 1 Haha";
}
else if(i==2)
{
return "Second 2 HaHa";
}
else{
return "Second Error";
} }
private String
getThird(int i)
{
if(i==1){
return "Third 1
Haha";
}
else if(i==2)
{
return "Third 2 HaHa";
}
else
{
return "Third Error";
} }}
13.配置关键的remoting-config.xml文件,它在将复制在WEB-INF的flex目录内
14.在remoting-config.xml中标签之前加入destination信息.
com.zhan.lcds.DataService
15.可以将DemoWeb发布了,发布DemoWeb,最后将已经在FB中编写的mxml拷到发布路径的相应地方即可
16.测试,打开tomcat,输入mxml的路径,tomcat会将它编译
17.搞定
注意的地方:
1.remoting-config.xml中设定的destination
id一定要与flex中请求的id相同
2.调用的方法与服务器提拱的方法也要相同
=============================
LCDS乱码问题
修改mysql服务器配置文件
my.ini [default-chart-set=utf8]
配置远程服务目标:
destination节点的scope属性值可选application 、session 和request ,指定了远程对象实例作用域
request:服务器会为每一次请求 都创建一个远程Java对象实例,默认作用域
session:服务器会为每一个会话
创建一个共享的远程Java对象实例。通常,连接服务器的每一个浏览器实例 构成了一个会话。同一浏览器的不同标签页共享 该远程实例
application:服务器为每一个Flex应用 创建一个远程的Java对象实例
从服务器性能上来说,设置”request“会影响性能
;可以选择设置”session“或者”application“,然后前台每次绑定数据的时候先清空一次 ,即可
限制远程Java对象可访问方法:
见下代码
>
>
com.adobe.ptp.service.GroupService
session
本文详细介绍如何在FlexBuilder3和LCDS2.5.1环境下搭建开发环境,包括安装步骤、配置过程及解决乱码问题的方法。

1101

被折叠的 条评论
为什么被折叠?



