Flash与Jsp通信(一)
为了实现as与jsp通信,我们首先先配置好tomcat (这里不多说),在tomcat的Apache Software Foundation\Tomcat 5.5\webapps
创建一个目录
如:J:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\flash
在flash目录下 创建一个index.jsp文件。为jsp写上一些代码用于接收客户端发送来的信息
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<p>欢迎来到这里3</p>
<%
String myname=request.getParameter("name");
String pwd=request.getParameter("pwd");
if(myname!=null)
{
out.clear();
out.print(myname);
out.print(pwd);
}
%>
</body>
</html>
这里我们只是接收客户端发送的两个参数 ,一个是name,一个是pwd 。
客户端设计:
为了能够连接服务器,我们可以尝试在flash客户端写一个连接类,用于够连接服务器,并可以发送数据到jsp,jsp页面能够处理数据
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
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));
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
测试:用文档类作一个测试,在场景里面创建一个按钮用于发送数据。
package
{
import flash.display.Sprite;
import flash.events.*;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.net.*;
public class main extends Sprite
{
private var con:Connection ;
public var myurl:String="http://localhost:8080/flash/index.jsp";
public function main()
{
con=new Connection();
btn.addEventListener(MouseEvent.CLICK,onclick);
}
private function onclick(e:MouseEvent):void
{
var para:URLVariables=new URLVariables();
para.name="22222";
para.pwd="222222";
con.sendMessage(para,myurl);
}
}
}
当我们按下按钮的时候就能够发送数据到jsp页面里面,jsp页面接收到数据就会显示name 和pwd的字符串内容:
para.name="22222";
para.pwd="222222";
String myname=request.getParameter("name");//接收客户端发送的信息
String pwd=request.getParameter("pwd");//接收客户端发送的信息
有了这个连接类之后,我们可以尝试做一些更多交互,如发送数据到服务器里面,服务器返回一些xml或者其他数据给客户端,从而达到通信的效果。
这里只是一个简单的测试。
接下来:我们进行制作一个客户端
/*****************************制作过程(2)********************************************/
/* 扩展功能 */
在原有点基础上,制作一个客户端用于发送数据。
步骤:导入import flash.text.*;
使用TextField 类来创建两个输入框
如:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
username=new TextField();
addChild(username);
username.width=200;
username.height=20;
username.x=stage.stageWidth/2;
username.y=stage.stageHeight/2;
username.type = TextFieldType.INPUT;//输入方式
username.border = true;//边框
username.background = true;
指定它的位置,宽度 和高度,并指定边框显示 以及背景。指定TextField对象为输入方式。
接下来 创建一按钮:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
var btn:Button=new Button();
addChild(btn);
btn.width=40;
btn.height=20;
btn.label="Send";
btn.x=stage.stageWidth/2;
btn.y=stage.stageHeight/2+50;
btn.addEventListener(MouseEvent.CLICK,SendHander);
初始化它的高度和宽度,并指定位置,以及监听方法。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
package
{
import flash.display.Sprite;
import flash.events.*;
import flash.text.*;
import flash.display.SimpleButton;
import fl.controls.Button;
import flash.net.*;
public class main extends Sprite
{
private var con:Connection;//连接类
private var username:TextField;//名字
private var pwd:TextField;//密码
public var myurl:String="http://localhost:8080/flash/index.jsp";
public function main()
{
init();//初始化输入框
}
private function init():void
{
username=new TextField();
addChild(username);
username.width=200;
username.height=20;
username.x=stage.stageWidth/2;
username.y=stage.stageHeight/2;
username.type = TextFieldType.INPUT;//输入方式
username.border = true;//边框
username.background = true;
pwd=new TextField();
addChild(pwd);
pwd.width=200;
pwd.height=20;
pwd.x=stage.stageWidth/2;
pwd.y=stage.stageHeight/2+22;
pwd.type = TextFieldType.INPUT;//输入方式
pwd.border = true;//边框
pwd.background = true;
var btn:Button=new Button();
addChild(btn);
btn.width=40;
btn.height=20;
btn.label="Send";
btn.x=stage.stageWidth/2;
btn.y=stage.stageHeight/2+50;
btn.addEventListener(MouseEvent.CLICK,SendHander);//发送信息
}
private function SendHander(e:MouseEvent):void
{
if (username.text!="" ||pwd.text!="")
{ var con:Connection=new Connection();
var para:URLVariables=new URLVariables();//发送所需要的数据 ,包括用户名和密码
para.userName=username.text;
para.userPwd=pwd.text;
con.sendMessage(para,myurl);
} else
{
trace("不能发送空信息");
}
}
}
}
一个是名字 一个是密码。调用原有类来制作发送到平台
这里是用于代码创建的输入框还有个按钮。通过按钮发送我们所需要的数据
接着就是服务器的一端
使用简单的方法接受数据:与上面的一样。