Flex与Servlet通信 的简单计算器
说明:
前台供用户输入数字--->传递到后台-->进行计算--->把结果传递到前台。
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:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --><mx:HTTPService id="sevlet" resultFormat="e4x" result="resultHandler(event)"/></fx:Declarations><fx:Script><![CDATA[import mx.collections.ArrayCollection;import mx.controls.Alert;import mx.rpc.events.ResultEvent;var com:ArrayCollection = new ArrayCollection(["+","-","*","/"]);private function calculate():void{this.submit.enabled=false;var url:String="http://localhost:8080/myReport/FlexCalculate";this.sevlet.url=url;var param:URLVariables=new URLVariables();if(this.number1.text == "" || this.number2.text == ""){ Alert.show("请输入数字"); return;}param.number1=this.number1.text;param.number2=this.number2.text;param.opertion=this.myComboBox.text;param.timestamp=(new Date()).toString();this.sevlet.send(param);//}private function resultHandler(event:ResultEvent):void{result.text = event.result.userthis.submit.enabled=true;}private function clean():void{ this.number1.text = "";this.number2.text = "";this.myComboBox.text = "+";this.result.text = "";}]]></fx:Script><s:Panel width="500" height="300" title="计算器" backgroundColor="#8C7C73" verticalCenter="0" horizontalCenter="0"> <mx:VBox> <mx:HBox><s:TextInput width="150" id="number1"/> <mx:ComboBox id="myComboBox" x="10" y="10" dataProvider="{com}" width="50"/><s:TextInput width="150" id="number2"/><s:Button label="=" width="30" id="submit" click="calculate();"/><s:TextInput width="50" id="result"/></mx:HBox> <mx:HBox> <s:Button label="计算" width="230" click="calculate();"/><s:Button label="清除" width="230" click="clean();"/></mx:HBox> </mx:VBox></s:Panel></s:Application>
servlet文件:
package controller;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FlexCalculate extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("1111");System.out.println("number1:" + request.getParameter("number1"));System.out.println("number2:" + request.getParameter("number2"));System.out.println("opertion:" + request.getParameter("opertion"));int result = 0;if(request.getParameter("opertion").equals("+")){result = Integer.valueOf(request.getParameter("number1")) + Integer.valueOf(request.getParameter("number2"));}else if(request.getParameter("opertion").equals("-")){result = Integer.valueOf(request.getParameter("number1")) - Integer.valueOf(request.getParameter("number2"));}else if(request.getParameter("opertion").equals("*")){result = Integer.valueOf(request.getParameter("number1")) * Integer.valueOf(request.getParameter("number2"));}else{result = Integer.valueOf(request.getParameter("number1")) / Integer.valueOf(request.getParameter("number2"));} System.out.println("result1:" + result); request.setCharacterEncoding("UTF-8"); //flex中隐含为utf-8编码 response.setContentType("text/xml;charset=utf-8"); String para = request.getParameter("username"); PrintWriter out = response.getWriter(); out.println("<zpa>"); out.println("<user>"+result+"</user>"); out.println("</zpa>"); out.flush(); out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doGet(request,response);}}