之前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,
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;
}
}
好了,部署到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!