轉自http://www.cnblogs.com/kunpengit/archive/2011/12/06/2277657.html
Flex結合java實作一個登入功能
1、 環境的搭建:
s
對message-congig.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="loginserverTag">
<properties>
<source>com.wangkun.Login</source>
</properties>
</destination>
</service>
Web.xml的配置如下:
<display-name>BlazeDS</display-name>
<description>BlazeDS Application</description>
<!-- Http Flex Session attribute andbinding listener support -->
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
<!-- MessageBroker Servlet -->
<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>1</load-on-startup>
</servlet>
<servlet-mapping>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
這些xml檔案基本固定。
1、 建立Bean類User和Login類
public class Login {
public String login(String name, String psw) {
if ("aa".equals(name) && "123".equals(psw)) {
return "ok";
} else {
return "error";
}
}
public String login(User user){
if("sss".equals(user.getName()) && "123".equals(user.getPwd())){
return "good";
}else{
return "sorry";
public User login(){
return new User("wang","aaa",33);
}
啟動tomcat,至此myeclipse裡的配置結束。
3、
在flah builder裡建立一個flex項目。
4、 對index.mxml的編寫:
首先要在fx:Decaration中配置destination對應于message-congig.xml中的id
Result是回調函數,
<fx:Declarations>
<!-- 将非可視元素(例如服務、值對象)放在此處 -->
<mx:RemoteObject id="loginClientTag"destination="loginserverTag" result="huidiao1(event)" endpoint="/flexApp01/messagebroker/amf"></mx:RemoteObject>
<mx:RemoteObject id="loginClientTag2"destination="loginserverTag" result="huidiao2(event)" endpoint="/flexApp01/messagebroker/amf"></mx:RemoteObject>
</fx:Declarations>
Fx:script中的代碼如下:
<fx:Script>
<![CDATA[
import com.wang.asclass.User;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
protected function huidiao1(event:ResultEvent):void
{
// TODO Auto-generated method stub
var result:String =event.result as String ;
Alert.show(result,"結果");
}
protected function huidiao2(event:ResultEvent):void
var result:User = event.result as User;
Alert.show(result.name);
trace(result.name);
protected function senddata(event:MouseEvent):void //按确認按鈕時
var name:String=this.nametext.text;
var psw :String=this.pswtext.text;
var user :User = new User();
user.name=name;
user.pwd=psw;
loginClientTag.login(user);
protected function canceldata(event:MouseEvent):void //按取消按鈕時
this.nametext.text="";
this.pswtext.text="";
protected function showdata(event:MouseEvent):void{ //按查詢按鈕
loginClientTag2.login();
]]>
</fx:Script>
視圖:
<s:Panel x="184" y="71" width="375" height="259">
<s:Label x="34" y="27" text="姓名:" />
<s:TextInput id="nametext" x="78" y="18"/>
<s:Label x="34" y="72" text="密碼:"/>
<s:TextInput id="pswtext" x="78" y="62"/>
<s:Button x="51" y="141" label="确定" click="senddata(event)"/>
<s:Button x="162" y="141" label="取消" click="canceldata(event)"/>
<s:Button x="272" y="141" label="查詢" click="showdata(event)"/>
</s:Panel>
可建立一個名為User的as類
package com.wang.asclass
{
[Bindalbe]
[RemoteClass(alias="com.wangkun.User")]
public class User
{
public function User()
{
}
public var name : String;
public var pwd : String;
public var age : int;