flex3 java_flex3与java通信

method="GET" >

{n.text}

//当 HTTPService 调用成功返回时调度

private function serviceRequest(event:Event):void{

r.text=service.lastResult.toString();

}

private function send():void{

//发送请求

service.send();

}

]]>

以get方式发送请求,request标签内是参数。

GetData.java

package servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class GetData extends HttpServlet {

public GetData() {

super();

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String name=request.getParameter("name");

response.setContentType("text/xml");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter() ;

if(name!=null&&!"".equals(name)){

if(name.equals("gao")){

out.print("这是个好人呀!");

}else if(name.equals("wang")){

out.print("坏人,很坏的人,不是人!");

}else{

out.print("外星人!!");

}

}

out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

public void init() throws ServletException {

}

}

以json返回方式:

java端用json生成类的json字符串,发送到flex客户端,flex再解析json为flex的类,这要使用到java的json包和flex的json包,我用的是json-lib-2.2.2-jdk15.jar和as3corelib.swc。

login.mxml:

{n.text}

{p.text}

import com.adobe.serialization.json.JSON;

import mx.rpc.events.ResultEvent;

private function returnResult(event:ResultEvent):void{

var person:Object=JSON.decode(event.result.toString());

t.text+=person.name;

t.text+=person.age;

t.text+=person.sex;

}

private function logins():void{

form.send();

}

]]>

package servlet;

import gjs.Person;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

public class LoginServlet extends HttpServlet {

public LoginServlet() {

super();

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/xml");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

String name=request.getParameter("name");

String psw=request.getParameter("psw");

if("gjs".equals(name)&&"520".equals(psw)){

Person p=new Person("王八蛋",22,false);

JSONObject jo=JSONObject.fromObject(p);

out.print(jo.toString());

System.out.println(jo.toString());

}else{

out.print("");

}

out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

public void init() throws ServletException {

// Put your code here

}

}

跟前面没什么两样,只是用json转了一下,都是按json接口来的,所以使用起来平台差异都不大。

传xml方式:

Servlet:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/xml");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

StringBuilder sb=new StringBuilder();

sb.append("");

sb.append("");

sb.append("");

sb.append("");

sb.append("");

sb.append("");

sb.append("");

out.write(sb.toString());

}

mxml:

import mx.events.DataGridEvent;

import mx.events.ListEvent;

import mx.events.ItemClickEvent;

import mx.collections.ArrayCollection;

import mx.rpc.events.ResultEvent;

[Bindable]

private var l:ArrayCollection;

private var index:int;

private function getResult(e:ResultEvent):void{

l=e.result.agents.agent as ArrayCollection;

trace(e.result);

}

private function send():void{

h.send();

}

]]>

RemoteObject方式:

先要安装lcds,在remoting-config.xml中加这个

gjs.Agent

application

Flex.mxml:

import mx.events.DataGridEvent;

import mx.events.ListEvent;

import mx.events.ItemClickEvent;

import mx.collections.ArrayCollection;

import mx.rpc.events.ResultEvent;

[Bindable]

private var l:ArrayCollection;

private var index:int;

private function callJava():void{

r.getAgent();

//服务成功返回后调用

r.addEventListener(ResultEvent.RESULT,showJavaObj);

}

private function addSub(e:ListEvent):void{

index=e.rowIndex;

r.addAgent(e.rowIndex);

r.addEventListener(ResultEvent.RESULT,addAgent);

//去除之前的事件监听showJavaObj否则还会调用

r.removeEventListener(ResultEvent.RESULT,showJavaObj);

}

private function addAgent(e:ResultEvent):void{

var o:Object=e.result as Object;

//加入子元素

l.addItemAt(o,index+1);

}

private function showJavaObj(event:ResultEvent):void{

l=event.result as ArrayCollection;

}

]]>

Agent.java:

package gjs;

import java.util.ArrayList;

import java.util.List;

public class Agent {

private long id;

private String name;

private int age;

private boolean sex;

//一定要有无参构造,因为写了有参构造没有默认的无参了

public Agent(){

}

public Agent(long id,String name,int age,boolean sex){

this.id=id;

this.name=name;

this.age=age;

this.sex=sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public boolean isSex() {

return sex;

}

public void setSex(boolean sex) {

this.sex = sex;

}

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public List getAgent(){

Agent a1=new Agent(100,"王八蛋",23,false);

Agent a2=new Agent(101,"王九蛋",22,true);

Agent a3=new Agent(102,"王十蛋",21,false);

Agent a4=new Agent(103,"王七蛋",20,true);

List l=new ArrayList();

l.add(a1);

l.add(a2);

l.add(a3);

l.add(a4);

return l;

}

public Agent addAgent(long id){

System.out.println(id);

Agent a1=new Agent(200,"朱重八",33,true);

return a1;

}

}

环境配置有点麻烦,可以参考“Flex + LCDS + Java 入门教程”这个文档。

完成

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-12-12 11:17

浏览 3737

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值