Flex与Java通信之HttpService
flashbuilder4.6、myeclipse10
参考:http://www.cnblogs.com/lovemoon714/archive/2012/05/25/2517684.html
1、Flex端代码
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 initialize="init()"> 6 <fx:Declarations> 7 <!-- 将非可视元素(例如服务、值对象)放在此处 --> 8 </fx:Declarations> 9 <fx:Script> 10 <![CDATA[ 11 import mx.controls.Alert; 12 import mx.rpc.events.FaultEvent; 13 import mx.rpc.events.ResultEvent; 14 import mx.rpc.http.HTTPService; 15 16 private function init():void{ 17 18 //加载HTTPService的返回监听 19 httpSer.addEventListener(ResultEvent.RESULT,httpSerResultHandler); 20 httpSer.addEventListener(FaultEvent.FAULT,httpSerFaultHandler); 21 } 22 23 private function login():void{ 24 httpSer.send(); 25 } 26 27 //返回成功事件 28 private function httpSerResultHandler(event:ResultEvent):void{ 29 Alert.show(event.result.toString(),"登录提示"); 30 } 31 //返回失败事件 32 private function httpSerFaultHandler(event:FaultEvent):void{ 33 Alert.show(event.fault.message as String,"登录提示"); 34 } 35 36 ]]> 37 </fx:Script> 38 <fx:Declarations> 39 <s:HTTPService id="httpSer" url="http://localhost:8080/JavaFlexHttp/FlexLoginServelt1" method="POST"> 40 <s:request> 41 <!--需要发送到服务器的参数名,及值,接收参数名时必须一致--> 42 <userName>{txt_userName.text}</userName> 43 <userPwd>{txt_userPwd.text}</userPwd> 44 </s:request> 45 </s:HTTPService> 46 </fx:Declarations> 47 <s:Panel x="37" y="40" width="250" height="200"> 48 <s:Label x="37" y="28" text="用户名:"/> 49 <s:Label x="37" y="61" text="密 码:"/> 50 <s:TextInput id="txt_userName" x="82" y="24"/> 51 <s:TextInput id="txt_userPwd" x="83" y="56" displayAsPassword="true"/> 52 <s:Button x="83" y="115" label="登录" id="btn_login" click="login()"/> 53 </s:Panel> 54 </s:Application>
flex项目结构:
2、Java端代码
1 package com; 2 import java.io.IOException; 3 import java.io.PrintWriter; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 11 public class FlexLoginServelt extends HttpServlet { 12 public void doPost(HttpServletRequest request, HttpServletResponse response) 13 throws ServletException, IOException { 14 15 response.setContentType("text/html"); 16 response.setContentType("text/xml;charset=utf-8"); 17 PrintWriter out = response.getWriter(); 18 //接收Flex端传来的参数 19 String userName=request.getParameter("userName"); 20 String userPwd=request.getParameter("userPwd"); 21 String result="登录失败,用户名或密码错误!"; 22 if("admin".equals(userName) || "".equals(userPwd)){ 23 result="登录成功!"; 24 } 25 //将登录信息返回给客户端 26 out.println(result); 27 out.flush(); 28 out.close(); 29 } 30 }
java项目结构:
3、web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <servlet> <servlet-name>111</servlet-name> <!-- 3 可随意取名 要和2一样--> <servlet-class>com.FlexLoginServelt</servlet-class> <!-- 4 文件目录,注意添加包名--> </servlet> <servlet-mapping> <servlet-name>111</servlet-name> <!-- 2 可随意取名 要和3一样--> <url-pattern>/FlexLoginServelt1</url-pattern> <!-- 1 可随意取名--> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 访问顺序为1—>2—>3—>4,其中2和3的值必须相同。 url-pattern 标签中的值是要在浏览器地址栏中输入的 url,可以自己命名, 这个 url 访问名为 servlet-name 中值的 servlet, 两个 servlet-name 标签的值必须相同, 因为通过 servlet 标签中的 servlet-name 标签映射到 servlet-class 标签中的值, 最终访问 servlet-class 标签中的 class。 还有,web.xml 的 / 表示的是http://localhost:8080/ + 工程名 而.jsp页面的action,加了/表示绝对路径http://localhost:8080/ ,没有加 / 表示的是相对路径 --> </web-app>
结果: