这一次,我们做一简单的注册页面,使用flex 和jsp来通信,根据4的做法,flex使用rpc可以返回jsp输出的xml信息。
做一个注册页面:
包括的项有:姓名,密码,性别,年龄,还有邮件
其次,我们在flex做一个简单的注册页面效果。
注册时候,发送数据的函数如何写?根据上次已经封装好的方法。我们只需要调用其方法就行
private function Regdata():void { var para:URLVariables=new URLVariables(); para.userName=userName0.text; para.userPwd=userPwd0.text; para.sex=sex.text; para.age=age.text para.mail=mail.text; con.sendMessage(para,Connect2.regurl);//发送数据 con.addEventListener(ResultEvent.RESULT,resulthander2);//监听返回结果 con.addEventListener(FaultEvent.FAULT,faulthander2);//监听错误结果 } private function resulthander2(event:ResultEvent):void { trace("第二个监听"); // trace(event.result); var myxml2:XML=XML(event.result); trace(myxml2); } private function faulthander2(event:FaultEvent):void { trace("cuowu"); }
客户端要发送的数据包括姓名,密码,性别,年龄,还有邮件
在服务器里面要进行接收客户端发送来的数据:
String myname=request.getParameter("userName"); String mypwd=request.getParameter("userPwd"); String mysex=request.getParameter("sex"); int myage=Integer.parseInt(request.getParameter("age")); String mymail=request.getParameter("mail");
年龄由于是int类型,所以在接收的时候需要进行转换类型。因为request接收的是字符串,因此需要进行这样的操作
接下来,老话题。连接数据库,并插入数据项:
注意:数据库为:Webgame 而插入的表是admin
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> <% response.setContentType("text/xml"); String myname=request.getParameter("userName"); String mypwd=request.getParameter("userPwd"); String mysex=request.getParameter("sex"); int myage=Integer.parseInt(request.getParameter("age")); String mymail=request.getParameter("mail"); Connection con = null; try{ Class.forName("com.mysql.jdbc.Driver"); String dbUrl = "jdbc:mysql://localhost:3306/Webgame?useUnicode=true&characterEncoding=GB2312"; String dbUser = "root"; String dbPwd = "123"; con = DriverManager.getConnection(dbUrl,dbUser,dbPwd); String sql="INSERT INTO admin(userName,userPwd,sex,age,mail) values('"+myname+"','"+mypwd+"','"+mysex+"','"+myage+"','"+mymail+"')"; Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); stmt.executeUpdate(sql); out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); out.println("<userinfo><ss>success</ss><ss>success2</ss></userinfo>"); } catch(Exception ex) { //out.print("连接失败!!<br>"+ex.toString()); out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); out.println("<userinfo><ss>"+ex.toString()+"</ss><ss>fail</ss></userinfo>"); } %>
成功就会返回成功的信息,相反失败就出错。
下面是客户端的代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" width="703" height="543"> <mx:Script> <!--[CDATA[ import mx.effects.IAbstractEffect; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import Config.Connect2; private var con:Connect2; private function init():void { con=Connect2.getconnect();//链接网络 reg.addEventListener(MouseEvent.CLICK,regclick); } private function senddata():void { if(userName.text!="" && userPwd.text!="") { var para:URLVariables=new URLVariables(); para.userName=userName.text; para.userPwd=userPwd.text; con.sendMessage(para,Connect2.myurl);//发送数据 con.addEventListener(ResultEvent.RESULT,resulthander);//监听返回结果 con.addEventListener(FaultEvent.FAULT,faulthander);//监听错误结果 } } private function resulthander(event:ResultEvent):void { trace("d"); var myxml:XML=XML(event.result); trace(myxml);//输出xml格式 trace(myxml.child("ss").children()[0]); } private function faulthander(event:FaultEvent):void { trace("cuowu"); } private function regclick(event:MouseEvent):void { view.selectedChild=regpanel; } private function Back():void { view.selectedChild=loginpanel; } private function Regdata():void { var para:URLVariables=new URLVariables(); para.userName=userName0.text; para.userPwd=userPwd0.text; para.sex=sex.text; para.age=age.text para.mail=mail.text; con.sendMessage(para,Connect2.regurl);//发送数据 con.addEventListener(ResultEvent.RESULT,resulthander2);//监听返回结果 con.addEventListener(FaultEvent.FAULT,faulthander2);//监听错误结果 } private function resulthander2(event:ResultEvent):void { trace("第二个监听"); // trace(event.result); var myxml2:XML=XML(event.result); trace(myxml2); } private function faulthander2(event:FaultEvent):void { trace("cuowu"); } ]]--> </mx:Script> <mx:Panel x="107" y="65" width="381" height="303" layout="absolute"> <mx:ViewStack id="view" width="361" height="263"> <mx:Canvas id="loginpanel"> <mx:TextInput id="userName" x="123.5" y="60" width="196"/> <mx:Label x="78.5" y="62" text="Name"/> <mx:TextInput id="userPwd" x="123.5" y="90" width="196"/> <mx:Label x="59.5" y="92" text="Password"/> <mx:Button click="senddata()" label="Login" labelPlacement="left" x="189.5" y="120"/> <mx:Label id="reg" x="159.5" y="187" text="Click here toRegister" width="151"/> <mx:Button x="253.5" y="120" label="Button" width="57"/> </mx:Canvas> <mx:Canvas id="regpanel"> <mx:TextInput id="sex" x="105" y="125" width="196"/> <mx:Label x="60" y="124" text="Sex"/> <mx:Label x="60" y="162" text="E-mail"/> <mx:TextInput id="mail" x="105" y="160" width="196"/> <mx:TextInput id="userName0" x="105" y="36" width="196"/> <mx:Label x="60" y="38" text="Name"/> <mx:TextInput id="userPwd0" x="105" y="66" width="196"/> <mx:Label x="41" y="68" text="Password"/> <mx:Button x="154" y="213" label="Register" click="Regdata()"/> <mx:Button id="Btnback" x="247" y="213" label="Back" click="Back()"/> <mx:Label x="60" y="98" text="Age"/> <mx:TextInput x="105" y="96" width="196" id="age"/> </mx:Canvas> </mx:ViewStack> </mx:Panel> </mx:Application>
注意:这里的注册并没有使用正规表达式来规范输入,所以对于注册信息的准确性还是要提高
其次,在数据库的封装操作还可以使用javabean进行封装,这样看起来就灵活一点