服务器端使用Struts2框架,其中xml使用dom4j进行封装的。客户端(flex/桌面应用)在打开时调用HTTPService定义的对象的send()方法进行服务器端请求。最终将获取到的xml数据填充到datagrid控件中。
1、客户端(flex)代码
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="userRpc.send()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
private var users:ArrayCollection=new ArrayCollection();
protected function userData_resultHandler(event:ResultEvent):void
{
// TODO Auto-generated method stub
users=event.result.users.user;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<fx:Model id="userModel" source="xml/inventory.xml"/>
<s:HTTPService id="userRpc" url="http://localhost:8080/FlexXmlTest/getUsersXml.action" result="userData_resultHandler(event)"/>
</fx:Declarations>
<!--<mx:DataGrid x="71" y="185" id="dateGrid1" dataProvider="{userModel.user}">-->
<mx:DataGrid x="71" y="185" id="dateGrid1" dataProvider="{users}">
<mx:columns>
<mx:DataGridColumn headerText="姓名" dataField="name"/>
<mx:DataGridColumn headerText="年龄" dataField="age"/>
<mx:DataGridColumn headerText="性别" dataField="sex"/>
</mx:columns>
</mx:DataGrid>
</s:WindowedApplication>
2、服务器端代码
package com.szf.action;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class GetUsersXmlAction extends ActionSupport {
public String execute() throws Exception {
// TODO Auto-generated method stub
Document document = DocumentHelper.createDocument();
Element usersElement = document.addElement("users");
Element userElement1=usersElement.addElement("user");
Element userElement2=usersElement.addElement("user");
Element name1Element1=userElement1.addElement("name");
Element age1Element1=userElement1.addElement("age");
Element sex1Element1=userElement1.addElement("sex");
name1Element1.setText("张三");
age1Element1.setText("25");
sex1Element1.setText("女");
Element name1Element2=userElement2.addElement("name");
Element age1Element2=userElement2.addElement("age");
Element sex1Element2=userElement2.addElement("sex");
name1Element2.setText("李四");
age1Element2.setText("28");
sex1Element2.setText("男");
System.out.println("***********************");
HttpServletResponse response=(HttpServletResponse)ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
response.setContentType("text/html;charset=utf-8");
response.getWriter().print(document.asXML());
return null;
}
}
1、客户端(flex)代码
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="userRpc.send()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
private var users:ArrayCollection=new ArrayCollection();
protected function userData_resultHandler(event:ResultEvent):void
{
// TODO Auto-generated method stub
users=event.result.users.user;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<fx:Model id="userModel" source="xml/inventory.xml"/>
<s:HTTPService id="userRpc" url="http://localhost:8080/FlexXmlTest/getUsersXml.action" result="userData_resultHandler(event)"/>
</fx:Declarations>
<!--<mx:DataGrid x="71" y="185" id="dateGrid1" dataProvider="{userModel.user}">-->
<mx:DataGrid x="71" y="185" id="dateGrid1" dataProvider="{users}">
<mx:columns>
<mx:DataGridColumn headerText="姓名" dataField="name"/>
<mx:DataGridColumn headerText="年龄" dataField="age"/>
<mx:DataGridColumn headerText="性别" dataField="sex"/>
</mx:columns>
</mx:DataGrid>
</s:WindowedApplication>
2、服务器端代码
package com.szf.action;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class GetUsersXmlAction extends ActionSupport {
public String execute() throws Exception {
// TODO Auto-generated method stub
Document document = DocumentHelper.createDocument();
Element usersElement = document.addElement("users");
Element userElement1=usersElement.addElement("user");
Element userElement2=usersElement.addElement("user");
Element name1Element1=userElement1.addElement("name");
Element age1Element1=userElement1.addElement("age");
Element sex1Element1=userElement1.addElement("sex");
name1Element1.setText("张三");
age1Element1.setText("25");
sex1Element1.setText("女");
Element name1Element2=userElement2.addElement("name");
Element age1Element2=userElement2.addElement("age");
Element sex1Element2=userElement2.addElement("sex");
name1Element2.setText("李四");
age1Element2.setText("28");
sex1Element2.setText("男");
System.out.println("***********************");
HttpServletResponse response=(HttpServletResponse)ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
response.setContentType("text/html;charset=utf-8");
response.getWriter().print(document.asXML());
return null;
}
}