Flex 与 servlet 通信(Httpservice)

本文介绍了一种Flex与Java后端通过HTTPService进行通信的方法。通过实例展示了如何配置Java Servlet与Flex项目的交互流程,包括Java后端的servlet设置及Flex端的数据请求和服务响应处理。

之前flex与java通信一直用remoteobject,今天尝试了一下Httpservice,具体实现方法请往下看吧:
1 打开eclipse,新建web project工程,命名为 servletTest
2 在web.xml文件里面添加如下代码

Java代码 复制代码
  1. <servlet>   
  2.         <servlet-name>MyServlet</servlet-name>   
  3.         <servlet-class>com.ultra.test.MyServlet</servlet-class>   
  4.     </servlet>   
  5.     <servlet-mapping>   
  6.         <servlet-name>MyServlet</servlet-name>   
  7.         <url-pattern>/MyServlet/*</url-pattern>   
  8.     </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
代码如下:

Java代码 复制代码
  1. package com.ultra.test;   
  2.   
  3. import java.io.IOException;     
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.http.HttpServlet;   
  7. import javax.servlet.http.HttpServletResponse;    
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.ServletException;    
  10.   
  11. public class MyServlet extends HttpServlet {   
  12.        
  13.     private static final long serialVersionUID = 1L;      
  14.          
  15.         public MyServlet() {      
  16.             super();      
  17.         }      
  18.          
  19.         protected void doGet(HttpServletRequest request,      
  20.                 HttpServletResponse response) throws ServletException, IOException {      
  21.             String result = getHelloWorld(request, response);      
  22.                
  23.             PrintWriter p = response.getWriter();   
  24.             response.setContentType("text/xml");   
  25.             p.print(result);   
  26.             System.out.println("……………………………………………返回结果…………………………………………………" + result);   
  27.         }      
  28.          
  29.         protected void doPost(HttpServletRequest request,      
  30.             HttpServletResponse response) throws ServletException, IOException {   
  31.             doGet(request, response);      
  32.         }   
  33.            
  34.         private String getHelloWorld(HttpServletRequest request,      
  35.                 HttpServletResponse response)   
  36.         {   
  37.             String backString;   
  38.             String methodName = request.getParameter("name");   
  39.             backString = "Hello " + methodName + " !";   
  40.             return backString;   
  41.         }   
  42. }  
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里面添加代码

Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    
  3.                xmlns:s="library://ns.adobe.com/flex/spark"    
  4.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">   
  5.   
  6.     <fx:Script>   
  7.         <![CDATA[   
  8.             import mx.rpc.events.ResultEvent;   
  9.             protected function getText_clickHandler(event:MouseEvent):void  
  10.             {   
  11.                 service.method = "get";   
  12.                 service.resultFormat="text";   
  13.                 service.useProxy=false;   
  14.                 service.addEventListener(ResultEvent.RESULT, resultHandler);   
  15.                 var obj:Object = new Object;   
  16.                 obj.name = txt1.text;   
  17.                 service.send(obj);   
  18.             }   
  19.                
  20.             private function resultHandler(event:ResultEvent):void  
  21.             {   
  22.                 var result:String = String(event.result);   
  23.                 txt2.text = result;   
  24.             }   
  25.         ]]>   
  26.     </fx:Script>   
  27.   
  28.     <fx:Declarations>   
  29.         <!-- Place non-visual elements (e.g., services, value objects) here -->   
  30.         <s:HTTPService id="service" url="http://localhost:8080/ServletTest/MyServlet" />   
  31.     </fx:Declarations>   
  32.        
  33.     <s:Panel width="400" height="500">   
  34.         <s:TextInput id="txt1" width="50" x="50" y="10"/>   
  35.         <s:Button id="getText" x="50" y="50" label="获取数据" click="getText_clickHandler(event)"/>   
  36.         <s:TextInput id="txt2" x="50" y="100" width="100"/>   
  37.     </s:Panel>   
  38. </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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值