之前flex与java通信一直用remoteobject,今天尝试了一下Httpservice,具体实现方法请往下看吧:
1 打开eclipse,新建web project工程,命名为 servletTest
2 在web.xml文件里面添加如下代码
- <servlet> ??
- ????????<servlet-name>MyServlet</servlet-name> ??
-
????????<servlet-class>com.ultra.test.MyServlet</servlet-class> ??
- ????</servlet> ??
- ????<servlet-mapping> ??
- ????????<servlet-name>MyServlet</servlet-name> ??
- ????????<url-pattern>/MyServlet/*</url-pattern> ??
- ????</servlet-mapping>??
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.ultra.test.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet/*</url-pattern>
</servlet-mapping>
3 新建MyServlet.java文件,继承 HttpServlet
代码如下:
- package?com.ultra.test; ??
- ??
-
import?java.io.IOException;?? ??
-
import?java.io.PrintWriter; ??
- ??
-
import?javax.servlet.http.HttpServlet; ??
-
import?javax.servlet.http.HttpServletResponse;? ??
-
import?javax.servlet.http.HttpServletRequest; ??
-
import?javax.servlet.ServletException;? ??
- ??
-
public?class?MyServlet?extends?HttpServlet?{ ??
- ???? ??
-
????private?static?final?long?serialVersionUID?=?1L;??? ??
- ?????? ??
-
????????public?MyServlet()?{??? ??
-
????????????super();??? ??
- ????????}??? ??
- ?????? ??
-
????????protected?void?doGet(HttpServletRequest?request,??? ??
-
????????????????HttpServletResponse?response)?throws?ServletException,?IOException?{??? ??
- ????????????String?result?=?getHelloWorld(request,?response);??? ??
- ???????????? ??
- ????????????PrintWriter?p?=?response.getWriter(); ??
-
????????????response.setContentType("text/xml"); ??
- ????????????p.print(result); ??
-
????????????System.out.println("……………………………………………返回结果…………………………………………………"?+?result); ??
- ????????}??? ??
- ?????? ??
-
????????protected?void?doPost(HttpServletRequest?request,??? ??
-
????????????HttpServletResponse?response)?throws?ServletException,?IOException?{ ??
- ????????????doGet(request,?response);??? ??
- ????????} ??
- ???????? ??
-
????????private?String?getHelloWorld(HttpServletRequest?request,??? ??
- ????????????????HttpServletResponse?response) ??
- ????????{ ??
- ????????????String?backString; ??
-
????????????String?methodName?=?request.getParameter("name"); ??
-
????????????backString?=?"Hello?"?+?methodName?+?"?!"; ??
-
????????????return?backString; ??
- ????????} ??
- }??
package com.ultra.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletException;
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public MyServlet() {
super();
}
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
String result = getHelloWorld(request,response);
PrintWriter p = response.getWriter();
response.setContentType("text/xml");
p.print(result);
System.out.println("……………………………………………返回结果…………………………………………………" + result);
}
protected void doPost(HttpServletRequest request,IOException {
doGet(request,response);
}
private String getHelloWorld(HttpServletRequest request,HttpServletResponse response)
{
String backString;
String methodName = request.getParameter("name");
backString = "Hello " + methodName + " !";
return backString;
}
}
好了,部署到tomcat里面,后台到此结束。
再来看前台:
1 新建 flex project工程 ,命名ServletTest
2 在ServletTest.mxml里面添加代码
- <?xml?version="1.0"?encoding="utf-8"?> ??
-
<s:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"? ??
-
???????????????xmlns:s="library://ns.adobe.com/flex/spark"? ??
-
???????????????xmlns:mx="library://ns.adobe.com/flex/mx"?minWidth="955"?minHeight="600"> ??
- ??
- ????<fx:Script> ??
- ????????<![CDATA[ ??
-
????????????import?mx.rpc.events.ResultEvent; ??
-
????????????protected?function?getText_clickHandler(event:MouseEvent):void??
- ????????????{ ??
-
????????????????service.method?=?"get"; ??
-
????????????????service.resultFormat="text"; ??
-
????????????????service.useProxy=false; ??
- ????????????????service.addEventListener(ResultEvent.RESULT,?resultHandler); ??
-
????????????????var?obj:Object?=?new?Object; ??
- ????????????????obj.name?=?txt1.text; ??
- ????????????????service.send(obj); ??
- ????????????} ??
- ???????????? ??
-
????????????private?function?resultHandler(event:ResultEvent):void??
- ????????????{ ??
- ????????????????var?result:String?=?String(event.result); ??
- ????????????????txt2.text?=?result; ??
- ????????????} ??
- ????????]]> ??
- ????</fx:Script> ??
- ??
- ????<fx:Declarations> ??
- ????????<!--?Place?non-visual?elements?(e.g.,?services,?value?objects)?here?--> ??
-
????????<s:HTTPService?id="service"?url="http://localhost:8080/ServletTest/MyServlet"?/> ??
- ????</fx:Declarations> ??
- ???? ??
-
????<s:Panel?width="400"?height="500"> ??
-
????????<s:TextInput?id="txt1"?width="50"?x="50"?y="10"/> ??
-
????????<s:Button?id="getText"?x="50"?y="50"?label="获取数据"?click="getText_clickHandler(event)"/> ??
-
????????<s:TextInput?id="txt2"?x="50"?y="100"?width="100"/> ??
- ????</s:Panel> ??
- </s:Application>??
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
protected function getText_clickHandler(event:MouseEvent):void
{
service.method = "get";
service.resultFormat="text";
service.useProxy=false;
service.addEventListener(ResultEvent.RESULT,resultHandler);
var obj:Object = new Object;
obj.name = txt1.text;
service.send(obj);
}
private function resultHandler(event:ResultEvent):void
{
var result:String = String(event.result);
txt2.text = result;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g.,services,value objects) here -->
<s:HTTPService id="service" url="http://localhost:8080/ServletTest/MyServlet" />
</fx:Declarations>
<s:Panel width="400" height="500">
<s:TextInput id="txt1" width="50" x="50" y="10"/>
<s:Button id="getText" x="50" y="50" label="获取数据" click="getText_clickHandler(event)"/>
<s:TextInput id="txt2" x="50" y="100" width="100"/>
</s:Panel>
</s:Application>
最后重要的一步: 右键点击工程名: properties --> flex server Application server type 选择为 J2EE 去掉 use remote object addess service 配置Server location 我的是: Web root:D:/server/apache-tomcat-6.0.18/webapps/ServletTest root URL:http://localhost:8080/ServletTest 这样就可以了!运行,OK!