Flash与jsp通信类封装

今天写了一个通信类,可以实现和JSp进行数据交互。粘贴在一起,有兴趣可以尝试一下

<textarea cols="50" rows="15" name="code" class="c-sharp">package { //用于与网页通信的东西 import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.*; import flash.net.URLVariables; import flash.net.URLLoaderDataFormat; import flash.net.*; public class Connection extends EventDispatcher { public function Connection() { } public function sendMessage(para:URLVariables,Myurl:String,type:String="post",format:String="VARIABLES"):void {//设置发送数据的变量 //设置发送数据的方式 var request:URLRequest=new URLRequest(); request.data=para; request.url=Myurl; switch (type) { case "post" : request.method=URLRequestMethod.POST;//发送的方式 break; case "get" : request.method=URLRequestMethod.GET;//发送的方式 break; } //发送数据 var loader:URLLoader=new URLLoader(); switch (format) { case "VARIABLES" : loader.dataFormat=URLLoaderDataFormat.VARIABLES;//发送数据的格式 break; case "BIN" : loader.dataFormat=URLLoaderDataFormat.BINARY;//发送数据的格式 break; case "TEXT" : loader.dataFormat=URLLoaderDataFormat.TEXT;//发送数据的格式 break; } loader.addEventListener(Event.COMPLETE,completeHandler); loader.addEventListener(IOErrorEvent.IO_ERROR ,IoHandler); try { loader.load(request); } catch (e:Error) { trace("失败"); } } private function completeHandler(e:Event):void { //处理返回的结果,如果插入数据库成功那么就可以 var evt:ConnectionEvent=new ConnectionEvent(ConnectionEvent.COMPLETE); evt.data=URLLoader(e.target); this.dispatchEvent(evt); } private function IoHandler(e:Event):void { this.dispatchEvent(new ConnectionEvent(ConnectionEvent.WRONG)); } } }</textarea>

里面一个事件类。

 

<textarea cols="50" rows="15" name="code" class="c-sharp">package { import flash.events.Event; import flash.net.*; public class ConnectionEvent extends Event { public static const COMPLETE:String="complete"; public var data:URLLoader; public static const WRONG:String="wrong"; public function ConnectionEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false) { super(type,false,false); } override public function clone():Event { return new ConnectionEvent(LoadEvent.LOADXML); } } }</textarea>

 

 

用法:下面是一个简单的留言板功能。可以发送信息给jsp文件。通过jsp文件和mysql进行数据插入。

 

<textarea cols="50" rows="15" name="code" class="c-sharp">package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.text.*; import flash.utils.ByteArray; public class Liuyan extends MovieClip { private var para:URLVariables; private var conn:Connection; public function Liuyan() { SendBtn.addEventListener(MouseEvent.MOUSE_DOWN,onDown); CancelBtn.addEventListener(MouseEvent.MOUSE_DOWN,onCancel); } private function onCancel(event:MouseEvent):void { Name.text=""; Sex.text="" ; Mail.text="" ; Telephone.text=""; Msg.text=""; } private function onDown(event:MouseEvent):void { Send(); } private function Send():void { if (Name.text!="" &amp;&amp; Sex.text!="" &amp;&amp; Mail.text!="" &amp;&amp; Telephone.text!="" &amp;&amp; Msg.text!="") { var para:URLVariables=new URLVariables(); para.name=Name.text; para.sex=Sex.text; para.mail=Mail.text; para.telephone=Telephone.text; para.msg=Msg.text; conn=new Connection(); conn.addEventListener(ConnectionEvent.COMPLETE,completeHander); conn.addEventListener(ConnectionEvent.WRONG,wrongHandler); conn.sendMessage(para,ConnectionUrl.Liuyanurl); } else { var worngMsg:TextField=new TextField(); worngMsg.text="对不起,信息错误"; worngMsg.x=400; worngMsg.y=190; worngMsg.textColor=0xffffff; addChild(worngMsg); } } private function completeHander(event:ConnectionEvent):void { var para:URLLoader=event.data;//返回的信息处理 trace(para.data); trace(para.data.success); } private function wrongHandler(event:ConnectionEvent):void { throw new Error("cuowu"); } } }</textarea>

 

<textarea cols="50" rows="15" name="code" class="c-sharp">&lt;%@ page language="java" pageEncoding="UTF-8" import="java.sql.*"%&gt; &lt;%@ page contentType="text/html; charset=UTF-8"%&gt; &lt;jsp:useBean id="bean" class="com.ConnectServer"&gt;&lt;/jsp:useBean&gt; &lt;% Connection conn=bean.getConnection(); String name=request.getParameter("name"); String sex=request.getParameter("sex"); String mail=request.getParameter("mail"); String telephone=request.getParameter("telephone"); String msg=request.getParameter("msg"); System.out.println(name); String sql="insert into liuyan2(name,sex,mail,telephone,msg) values('"+name+"','"+sex+"','"+mail+"','"+telephone+"','"+msg+"')"; int cout= bean.executeUpdate(sql); if(cout&gt;0) { out.clear(); out.print("success="+"ok"); } else { out.print("success="+"fail"); } %&gt; </textarea>

 

这里要注意一个地方:out.clear();
    out.print("success="+"ok");

 

我们希望通过返回jsp输出内容让flash player 获取到,但是如果没有out.clear()这一行我们会经常出现变量为undefine

这个让我困惑了很久,在网上找到一个关于flash 获取jsp返回变量出现undefine的情况。我按照它的做法,可以解决到我的问题。但是至于为什么,这真的是很迷惑。

 

下面是一个java 的javabean 封装,我使用的开发平台是myeclise。数据库为mysql 。通过下面的修改,可以进行减少很多开发时间。

 

<textarea cols="50" rows="15" name="code" class="c-sharp">package com; import java.sql.*; public class ConnectServer { private Connection con; private ResultSet rs; private static String url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=GB2312"; private static String usernamer="root"; private static String password="123"; private static String diver="com.mysql.jdbc.Driver";//加载mysql的驱动 public static Connection getConnection() throws SQLException{ try { Class.forName(diver); } catch(ClassNotFoundException e) { e.printStackTrace(); return null; } return DriverManager.getConnection(url,usernamer,password); } public ResultSet executeQuery(String sql){ try { con=ConnectServer.getConnection(); Statement statement=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=statement.executeQuery(sql); } catch(SQLException e) { e.printStackTrace(); } return rs; } public int executeUpdate(String sql){ int count=0; Statement statement=null; try { con=ConnectServer.getConnection(); statement=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); count=statement.executeUpdate(sql); } catch(SQLException e) { e.printStackTrace(); } finally { try { if(statement!=null) statement.close(); if(con!=null) con.close(); } catch(SQLException ex) { ex.printStackTrace(); } } return count; } public void freeRset(ResultSet rset){ try { if(rs!=null) { rs.close(); con.close(); } } catch(Exception e) { e.printStackTrace(); } } } </textarea>

 

 

你可能感兴趣的:(jsp,function,String,Flash,import,variables)