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

          在上一篇文章中我们已经讲解了如何创建一个简单的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远程数据失败!======")
		}

	}
}
        那么到了这里我们的整个项目已经完全实现了我们想要的功能了。


         


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值