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 入门教程”这个文档。
完成
分享到:
2008-12-12 11:17
浏览 3737
评论