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远程数据失败!======")}}}那么到了这里我们的整个项目已经完全实现了我们想要的功能了。
- as3与javaweb结合开发属于个人的类YY的网站(二)
- as3与javaweb结合开发属于个人的类YY的网站(一)
- DIY属于个人开发使用的CSS Reset
- AS3.0学习之路(二)——关于FB和FL两款工具的结合开发
- 软件工程与个人项目的结合
- [公开课]微信公众平台与javaWeb的结合开发
- javaweb项目 基于jsp+servlet的 个人博客网站
- 搭建属于你的网站 记录下搭建个人网站探索之旅
- 基于javaweb开发的小区门户网站
- BeanFactory与FactoryBean的YY
- 一个属于自己的网站
- 创建属于自己的网站
- Android开发之属于你的短信验证码(二)
- 如何开发一个自己的个人网站
- 建立属于你的个人高效系统
- 搭建属于自己的个人博客
- JSP与XML的结合(二)
- JSTL与Struts的结合(二)
- Oracle直方图解析
- 通信系统概论---多路复用技术
- u盘安装ubuntu
- 维斯(Vizrt)虚拟演播室调试需要排的雷
- 让dojo.require异步加载小部件
- as3与javaweb结合开发属于个人的类YY的网站(二)
- 尝试封装socket 对this指针的猜想
- AndroidManifest 文件能做什么?
- 第一节 CSS学习--样式表简介
- 黑马程序员 关于单例设计模式的一些理解
- eclipse报错:Failed to load the JNI shared library
- 每日站会说什么?
- 用vc2010以上版本编译可以在低版本xp和2003的运行程序的方法
- java从List<Map>导出excel