as3与javaweb结合开发属于个人的类YY的网站(二)

来源:互联网 发布:天刀女性捏脸数据库 编辑:程序博客网 时间:2024/06/06 06:45

          在上一篇文章中我们已经讲解了如何创建一个简单的as端的编辑,那么接下来要实现的就是与我们的javaweb相结合的实现,那么我们要实现二者的结合,那么也要做好事先的准备工作,首先你要下载以下的文件。

         一、myeclipse 的IDE。

         二、tomcat6.0。

         三、mysql或者oracle数据库。

         四、下载com.adobe.serialization.json.JSON这个as的包把他丢到我们的as工程里面去。

         我们下载并安装好以上的这些软件以后,打开我们的myeclipse创建一个我们的web工程,在这里我采用的是三大框架,因此三大框架的配置文件什么的就不说了,这些不懂的自己百度去,网上很多这些的资料,默认我这里已经完全配置好了三大框架,数据库的库表也事先完全设计好了,建表语句大家可以去下面的网址下载去:

         那么我们现在已经建立起来我们的工程了,在web端我就介绍传送回服务器端的json数据的方法,所有的源代码都在这个地址里http://download.csdn.net/detail/linzhefeng78/5823715

         

/** * 功能描述:获取房间号,跳转到相应的房间 * @return */public void getRoomOwnerByIdAction(){// 获取房间所有者和登录的信息的集合List<UserVO> vuList = videoService.getRoomOwnerByIdService(videoMeetingInfoVO);try{String json = "";json += "{\"userLoginName\":\""+vuList.get(1).getUser_name()+"_"+videoMeetingInfoVO.getVideo_meeting_info_seq()+"\",";json += "\"roomOwner\":\""+vuList.get(0).getUser_name()+"_"+videoMeetingInfoVO.getVideo_meeting_info_seq()+"\"}";HttpServletResponse reposne = ServletActionContext.getResponse();reposne.setCharacterEncoding("UTF-8");reposne.getWriter().print(json);}catch (Exception e) {e.printStackTrace();}}
      那么我们的web端的响应服务器端已经完全做好了,然后我们再打开我们的flex项目,对我们的flex项目进行改造,首先我们改造我们的msSoSync方法

                /** 功能描述:监听远程共享对象*/private function mySoSync(e:SyncEvent):void{    hostListArray = new Array();    audienceListArray = new Array();    if(jsonDataArray==null){           var vju:VisitJavaUtil = new VisitJavaUtil("video!getMeetingUserByIdAction.action?temp=temp&videoMeetingInfoVO.video_meeting_info_seq=1");// 获取远程web服务器端传回来的数据           var t:Timer = new Timer(100);           t.addEventListener(TimerEvent.TIMER,function(event:TimerEvent):void{               if(vju.getJsonData()!=""){                     t.stop();                     jsonDataArray = JSON.decode(vju.getJsonData());                     // 循环判断用户的权限                     for(var loginUser:Object in mySO.data){                            var hasUser:Boolean = false;                             sec:for(var i:int=0;i<jsonDataArray.length;i++){                                var user_power_name:String = jsonDataArray[i].user_name;                                 trace(user_power_name+"==>"+loginUser+"---"+i)                                 if(loginUser==user_power_name){                                   // 如果登录的用户具有权限就put到具有用户权限的集合里面去                                    hostListArray.push(loginUser);                                    hasUser = true;                                    break sec;                                 }                            }                            if(hasUser==false){                                // 如果登录的用户不具有权限就put到没有用户用户权限的集合里面去                                audienceListArray.push(loginUser);                            }                      }                      // 将具有权限的用户的数组赋给audienceList集合                      audienceList.dataProvider = audienceListArray;                      // 将不具有权限的用户的数组赋给hostList集合                      hostList.dataProvider = hostListArray;               }           })           t.start();    }else{           // 循环判断用户的权限           for(var loginUser:Object in mySO.data){                  var hasUser:Boolean = false;                   sec:for(var i:int=0;i<jsonDataArray.length;i++){                      var user_power_name:String = jsonDataArray[i].user_name;                       //trace(user_power_name+"==>"+loginUser+"---"+i)                       if(loginUser==user_power_name){                         // 如果登录的用户具有权限就put到具有用户权限的集合里面去                          hostListArray.push(loginUser);                          hasUser = true;                          break sec;                       }                  }                  if(hasUser==false){                      // 如果登录的用户不具有权限就put到没有用户用户权限的集合里面去                      audienceListArray.push(loginUser);                  }            }            // 将具有权限的用户的数组赋给audienceList集合            audienceList.dataProvider = audienceListArray;            // 将不具有权限的用户的数组赋给hostList集合            hostList.dataProvider = hostListArray;    }}
     然后再将我们前面的对按钮和文本框的监听全加入进来

public function sendAudienceMsgByMouse(event:MouseEvent):void{           this.sendAudienceMsg();}/** * 功能描述: 发送普通用户的消息到公屏  **/public function sendAudienceMsg():void{       var audienceMsg:String = audienceMess.text;       var tm:Date = new Date();       if(audienceMsg==""){           audienceShowMess.htmlText += "<font size='15' color='#acf'>不能发送空的消息!</font>";           audienceShowMess.verticalScrollPosition = audienceShowMess.maxVerticalScrollPosition;       }else if(audienceMsg.length>50){           audienceShowMess.htmlText += "<font size='15' color='#acf'>最多只能输入50个字符!</font>";           audienceShowMess.verticalScrollPosition = audienceShowMess.maxVerticalScrollPosition;       }else {           // 获取用户输入的数据           audienceMsg = "<font color='#acf' size='12'>"+userLoginName.split("_")[0]+"说:  "+tm.getFullYear()+"年"+(tm.getMonth()+1)+"月"+tm.date+"日  "+tm.getHours()+":"+tm.getMinutes()+":"+tm.getSeconds()+"\n</font><font size='14' color='#ff0000'>  "+audienceMess.text+"</font>";           myNC.call("msgFromClient",null,"ut1","ut2",audienceMsg,"audienceMsg",hostListArray);           myNC.call("msgFromClient",null,"ut1","ut2",audienceMsg,"audienceMsg",audienceListArray);       }       audienceMess.htmlText = "";}public function sendMsgByMouse(event:MouseEvent):void{           this.sendMsg();}public function sendMsgByKey(event:KeyboardEvent):void{       if(event.keyCode==13){           this.sendMsg();       }}/** * 功能描述:发送消息  **/public function sendMsg():void{       var Msg:String = hostMess.text;       var tm:Date = new Date();       if(Msg==""){           hostShowMess.htmlText += "<font size='15' color='#acf'>不能发送空的消息!</font>";           hostShowMess.verticalScrollPosition = hostShowMess.maxVerticalScrollPosition;       }else if(Msg.length>20){           hostShowMess.htmlText += "<font size='15' color='#acf'>最多只能输入20个字符!</font>";           hostShowMess.verticalScrollPosition = hostShowMess.maxVerticalScrollPosition;       }else{          // 获取用户输入的数据           Msg = "<font color='#acf' size='12'>"+userLoginName.split("_")[0]+"说:  "+tm+"\n</font><font size='14' color='#ff0000'>  "+hostMess.text+"</font>";           myNC.call("msgFromClient",null,"ut1","ut2",Msg,"hostMsg",hostListArray);           myNC.call("msgFromClient",null,"ut1","ut2",Msg,"hostMsg",audienceListArray);       }       hostMess.text = "";}/** * 功能描述:客户端获取服务器端的数据 **/public function msgFromSrvr(msg:String,tip:String):void{     trace("客户端获取服务器端的数据=>"+msg);     if(tip=="hostMsg"){         hostShowMess.htmlText += msg;     }else{         audienceShowMess.htmlText += msg;     }}
      对于里面的VisitJavaUtil这是一个获取远程数据的一个工具类代码如下:

package com.mtv.util{import flash.events.*;import flash.net.URLLoader;import flash.net.URLRequest;import flash.utils.Timer;/** * 类描述:访问javaWeb端 **/public class VisitJavaUtil{ // 定义URLRequest对象private  var javaRequest:URLRequest;// 定义URLLoader对象private  var javaLoader:URLLoader;// javaweb端获取到的远程数据private  var jsonDATA:String="";// 相应web端的地址private var actionPath:String;public function VisitJavaUtil(actionPath:String):void{     this.actionPath = actionPath;     this.startLoader();}/** * 功能描述:获取响应远程web端的数据  **/public  function startLoader():void{     javaRequest = new URLRequest("http://127.0.0.1:8080/bookSysSSH/"+actionPath);     javaLoader = new URLLoader();     configureListeners(javaLoader);     try{           javaLoader.load(javaRequest);        }catch(e){            trace("==>"+e);        }}/** * 功能描述:获取web端返回的json数据  **/public function getJsonData():String{      return jsonDATA;} // 分派监听事件private  function configureListeners(dispathcer:IEventDispatcher):void{ dispathcer.addEventListener(Event.COMPLETE,javaLoaderComplete); dispathcer.addEventListener(IOErrorEvent.IO_ERROR,javaLoaderError);}// 加载成功以后响应的事件  private function javaLoaderComplete(event:Event):void{     trace("加载java远程数据=》"+event.target.data)     jsonDATA = event.target.data;}// 加载失败以后响应的事件private function  javaLoaderError(event:Event):void{     jsonDATA = "false"; trace("=====加载java远程数据失败!======")}}}
        那么到了这里我们的整个项目已经完全实现了我们想要的功能了。