让Flex与Java间进行数据传输

Java后台:如下图所示建立工程:

让Flex与Java间进行数据传输_第1张图片

代码如下:

User.java

package com.flex.model; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = -7366014401991941766L; public String username; public String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

DemoService.java

package com.flex.service; import java.util.ArrayList; import java.util.List; import com.flex.model.User; public class DemoService { public int login(String username, String password){ if(("shenbin").equals(username) && ("123").equals(password)){ return 1; } else if(("chenyan").equals(username) && ("234").equals(password)){ return 1; } else if(("chenyong").equals(username) && ("345").equals(password)){ return 1; } else if(("yangye").equals(username) && ("456").equals(password)){ return 1; } return 0; } public List<User> getUsers(){ List<User> users = new ArrayList<User>(); User user = new User(); user.setUsername("shenbin"); user.setPassword("123"); users.add(user); user = new User(); user.setUsername("chenyan"); user.setPassword("234"); users.add(user); user = new User(); user.setUsername("chenyong"); user.setPassword("345"); users.add(user); user = new User(); user.setUsername("yangye"); user.setPassword("456"); users.add(user); return users; } }

remoting-config.xml

<?xml version="1.0" encoding="UTF-8"?> <service id="remoting-service" class="flex.messaging.services.RemotingService"> <adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters> <default-channels> <channel ref="my-amf"/> </default-channels> <destination id="DemoService" > <properties> <source>com.flex.service.DemoService</source> </properties> </destination> </service>

services-config.xml

<?xml version="1.0" encoding="UTF-8"?> <services-config> <services> <service-include file-path="remoting-config.xml" /> </services> <channels> <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/Flex4jWeb/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint" /> </channel-definition> </channels> <logging> <target class="flex.messaging.log.ConsoleTarget" level="Error"> <properties> <prefix>[BlazeDS] </prefix> <includeDate>false</includeDate> <includeTime>false</includeTime> <includeLevel>false</includeLevel> <includeCategory>false</includeCategory> </properties> <filters> <pattern>Endpoint.*</pattern> <pattern>Service.*</pattern> <pattern>Configuration</pattern> </filters> </target> </logging> <system> <redeploy> <enabled>false</enabled> </redeploy> </system> </services-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>Flex4jWeb</display-name> <description>Flex4jWeb</description> <context-param> <param-name>flex.class.path</param-name> <param-value>/WEB-INF/flex/hotfixes</param-value> </context-param> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <init-param> <param-name>services.configuration.file</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping> </web-app>

所需Jar包:

flex-messaging-common.jar
flex-messaging-core.jar
flex-messaging-opt.jar
flex-messaging-proxy.jar
flex-messaging-remoting.jar

 

Flex前台:

ADOBE网站下载Flex Builder3,并按如下所示建立工程。

让Flex与Java间进行数据传输_第2张图片

让Flex与Java间进行数据传输_第3张图片

让Flex与Java间进行数据传输_第4张图片

如下图所示建立工程:

代码如下:

login.mxml

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:RemoteObject id="demoService" destination="DemoService"> <mx:method name="login" result="resultLogin(event);" fault="faultError(event);"/> </mx:RemoteObject> <mx:TextInput id="username" x="48" y="42"/> <mx:TextInput id="password" x="48" y="72"/> <mx:Button x="48" y="122" label="Login" click="loginEvent(event);"/> <mx:Script> <!--[CDATA[ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.controls.Alert; import flash.net.navigateToURL; import mx.controls.Alert; public function loginEvent(event:Event):void { var username:String = username.text; var password:String = password.text; demoService.login(username, password); } public function resultLogin(event:ResultEvent):void { var ret:int = event.result as int; if(ret == 1) { navigateToURL(new URLRequest("users.html"),'_self'); } } private function faultError(event:FaultEvent) : void { Alert.show("ERROR"); } ]]--> </mx:Script> </mx:Application>

users.mxml

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="demoService.getUsers();"> <mx:RemoteObject id="demoService" destination="DemoService" /> <mx:DataGrid dataProvider="{demoService.getUsers.lastResult}" width="100%" height="100%"/> <mx:Button label="Get Data" click="testClick(event);"/> <mx:Script> <!--[CDATA[ import mx.controls.Alert; public function testClick(event:Event):void { Alert.show("It's just a Test!"); } ]]--> </mx:Script> </mx:Application>

Flex Builder3中修改工程的Compile参数,如下图:

让Flex与Java间进行数据传输_第5张图片

注)参数:-locale en_US -services "C:/Java/Genuitec/MyEclipse 7.0/workspace/Flex4jWeb/context/WEB-INF/flex/services-config.xml"

 

如此Flex代码经过编译自动被发布到Java后台。启动Tomcat,访问如下URL:

http://localhost:8080/Flex4jWeb/flexdemo/login.html

你可能感兴趣的:(java,String,Flex,user,Class,encoding)