ASP应用实例腾讯内部讲义Word格式文档下载.docx
《ASP应用实例腾讯内部讲义Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ASP应用实例腾讯内部讲义Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
0'
"
)
可见,这个查询的返回结果是一条显示某个图片的命令,http:
//219.133.40.106/qq1_offline.gif就是表示图片所在的位置以及文件名,不同的图片代表了不同的状态。
根据您填写的resulttype的值不同,用不同的图片代表不同的状态,具体如下表:
表1状态一览表
Resulttype的值
图片
文件名
代表的含义
1
tm_offline.gif
TM用户离线
tm_online.gif
TM用户在线
2
rtx_offline.gif
s-buddy用户离线
rtx_online.gif
s-buddy用户在线
3
qq1_offline.gif
QQ用户离线
qq1_online.gif
QQ用户在线
0或4
qq_offline.gif
qq_online.gif
下面是一段获取单个用户的在线状态的完整示例代码:
html>
head>
metahttp-equiv="
Content-Type"
content="
text/html;
charset=gb2312"
>
title>
示例网页<
/title>
/head>
body>
这里显示的是QQ用户的状态,如果要更新,请刷新网页。
TM:
3621277的在线状态
scriptlanguage="
javascript"
src="
//219.133.38.16/getonline?
type=1&
qq=3621277&
resulttype=1"
<
/script>
/body>
/html>
从上面的代码可以看出,获取状态的命令是这句话:
Type=1&
服务器返回命令是:
该命令执行的结果将会在获取状态的命令的位置绘制一个图片,以代表客户的在线状态
2、获取多个用户的状态
获取多个用户状态的URL地址是:
其中Type=1是表示获取多个用户的状态,“Type=1&
”后面紧跟着的是您要查询的用户的QQ号码,各个号码之间必须用冒号“:
”隔开,并且必须以冒号“:
”结尾。
把上述URL地址拷贝到IE浏览器的地址栏中,回车,可以看到返回结果是:
online[0]=0;
online[1]=1;
online[2]=0;
您可以在网页中编写脚本来读取这些返回结果,编写时,您必须声明一个名为online的数组,用于读取你所要查询的QQ用户的状态。
online数组中的序号0,1,2的值分别对应URL地址中的先后QQ号码,数组的值0表示离线,1表示在线。
按照上面的例子则:
online[0]=0表示154195734用户离线;
online[1]=1表示240285461用户在线;
online[2]=0表示14137743用户离线。
根据这些返回值,您可以用图标显示他们的状态,这些图标都在http:
//219.133.40.106/地址下,具体的文件名以及他们所代表的图片及含义请参见“表1状态一览表”。
脚本示例代码:
varonline=newArray();
script>
if(online[0]==0)
document.write("
imgSRC=\"
//219.133.40.106/qq_offline.gif\"
);
else
//219.133.40.106/qq_online.gif\"
/script>
二、点击用户的状态给用户发送消息
在所显示的状态图标上,可以编写脚本,使鼠标点击该图标弹出给该用户发送消息的窗口,达到实时沟通的效果。
前提是:
您的机器必须安装了QQ或TM,如果您的QQ或TM还没启动,会提示您先启动,提示如下:
例如,在网页上显示了以下图标:
点击后,将出现以下会话窗口:
在显示图标的标签<
IMG>
的响应函数里的相应参数上填写如下参数:
tencent:
//Message/?
Menu=yes&
Exe=tm&
Uin=259966199
该参数大小写不敏感,其中Uin项表示要与之会话的QQ用户的号码;
Menu及Exe项的含义如下:
脚本示例:
functionSendMsg(sUrl)
{
try//支持
varxmlhttp=newActiveXObject("
TimwpDll.TimwpCheck"
this.location.href=sUrl;
}
catch(e)//不支持
{}
returnfalse;
imgSRC="
//219.133.40.106/qq_online.gif"
alt='
点击发送消息给对方'
onClick='
SendMsg("
Tencent:
Menu=YES&
Exe=QQ&
Uin=14137743"
)'
完整的示例代码如下:
HTML>
HEAD>
TITLE>
获取互动状态及实时发送消息示例<
/TITLE>
METAhttp-equiv=Content-Typecontent="
functionSendMsg(sUrl)
{
try//支持
{
varxmlhttp=newActiveXObject("
this.location.href=sUrl;
}
catch(e)//不支持
alert("
您没有安装QQ/TM,或者您的版本过旧,请到腾讯网站下载"
window.location="
"
;
returnfalse;
scriptsrc="
/HEAD>
BODYbgColor=#ffffffleftMargin=0topMargin=3>
CENTER>
TABLEheight=20cellSpacing=0width=640border=0>
TBODY>
TRalign=left>
TDwidth=22>
FONTface=wingdingscolor=bluesize=3>
K<
/FONT>
/TD>
TDwidth=380>
[购物]熟悉香港赛马的请进<
TDwidth=50>
QQ:
14137743<
/td>
td>
点击发送离线消息'
onClick='
SendMsg(\"
Uin=154195734\"
/SCRIPT>
TDwidth=88>
6-1111:
57<
/TR>
/TBODY>
/TABLE>
TABLEheight=20cellSpacing=0width=640bgColor=#eeefffborder=0>
[体育]6月12日天涯泡泡队比赛取消!
240285461<
if(online[1]==0)
//219.133.40.106/tm_offline.gif\"
Exe=TM&
Uin=240285461\"
//219.133.40.106/tm_online.gif\"
点击发送即时消息'
BR>
/CENTER>
/BODY>
/HTML>
三、互动状态的接口参考
目前webpresence系统有两种调用接口,一种是复杂接口,返回在线状态和调用qq(tm)的脚本;
另外一种是简单接口,只返回在线状态。
1、复杂接口(含有点击操作的)
调用接口:
=13010&
Version=1&
WebSiteName=
参数
说明
qq
用户qq号码
Exe
见下表
resulttype
取的在线状态图片的类形0:
qq;
1:
tm;
2:
s-buddy
WebSiteName
网站名称
UnionID
Menu
Version
版本号:
目前为1,默认值为1
返回内容:
//219.133.40.106/qq_offline.gif'
IsInstallQQ(\"
Menu=Yes&
UnionID=13010&
Uin=11111\"
\"
\"
命令
参数名
参数值
公用参数
YES/NO
当有多个QQ/TM启动时,是否出现UIN菜单进行选择
没有此参数时不出现选择Menu,而是取最近运行的QQ/TM
QQ/TM
启动TM还是QQ
没有此参数时启动最近运行的程序,如果没有运行,则启动QQ
Message
字符串
网站联盟ID
HostingID
为NULL则为非合作站点
UIN
QQ号码或企业号
Url
超链接
用户资料页面,链接中应该含有Uin,没有此参数则显示本地资料。
参数用加’’(单引号引起来),以区分“?
=&
”
网站名称,值请用’’(单引号引起来)
2、简单接口(无点击操作)
1)返回在线状态图片
调用接口:
QQ在线状态图片
TM在线状态图片
s-buddy在线状态图片
返回结果:
返回内容
QQ在线
//219.133.40.106/qq_online.gif'
QQ不在线
TM在线
//219.133.40.106/tm_online.gif'
TM不在线
//219.133.40.106/tm_offline.gif'
Sbuddy在线
//219.133.40.106/rtx_online.gif'
Sbuddy不在线
//219.133.40.106/rtx_offline.gif'
2)返回在线状态文字
不在线
在线
四、ASP应用实例
在实际应用中,具体的企业信息,它所对应的QQ号码,以及它在网页上的表现形式等信息往往是保存在后台数据库里,根据用户的浏览方式、搜索条件等以不同的方式显示出来。
于是,让网页“动”起来,实现动态显示,互动状态的表现形式将会更丰富多彩。
应用ASP技术,是实现这一目的的典型应用之一。
1、ASP的应用环境
MicrosoftActiveServerPages简称ASP,是一套微软开发的服务器端脚本环境,通过ASP我们可以结合HTML网页、ASP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。
ASP程序是在服务器端执行的,客户端通过浏览器发出请求,相应的ASP程序在服务端运行,并把运行结果返回给客户端。
ASP程序文件是以“*.asp”为后缀的文件,它必须运行在Web服务器上。
如果您的操作系统是Win95/98则请安装MSPersonalWebServer,如果是WinNT或Win2000以上的,则请安装IIS。
但安装好Web服务器后,会在系统盘下建立如下目录:
\Inetpub\wwwroot,您只需把ASP程序文件(如文件名为test.asp)拷贝到这个目录下,然后在其他机器的浏览器地址栏键入:
“http:
//服务器IP地址/test.asp”即可运行。
我们在“示例”目录下提供了一个ASP程序文件test.asp和一个数据库文件test.mdb,您只需把这两个文件拷贝到系统盘下的目录“\Inetpub\wwwroot”中,然后浏览器地址栏键入:
//服务器IP地址/test.asp”即可看到示例的结果。
2、ASP实例详解
1)应用场景
让我们设想一种场景,某个咨询网站保存了众多公司的信息,该网站面向用户提供这些公司基本信息和联系方式的查询。
某个用户希望获得所有公司的列表,期待的结果如下:
并且点击图标后,能弹出IM对话框,给这些公司的接口人留言或实时交流。
2)技术方案
由于公司数量众多,且每个公司的信息也有一定的个性化,我们考虑存储在数据库中。
在此,我们采用了Access数据库,使用ADO访问技术。
公司信息存在表Company里,表的结构定义如下:
字段名
类型
描述
CompanyID
数字
公司序号
CompanyName
文本
公司名称
文本
使用的程序:
QQ或TM
QQ
公司的联系QQ号码
ImgType
显示的图标类型,值的含义参见“表1状态一览表”
表2Company表结构
用户通过浏览器发出请求时,程序首先打开数据库,访问Company表,获取所有的公司信息,然后循环遍历记录集,提取所需要的信息,编写网页元素和脚本函数的参数,依次列出各公司的信息。
网页编写完毕后,服务器会自动返回给浏览器并正确显示。
3)编码实现
A、访问数据库
打开数据库:
%
Setconn=Server.CreateObject("
ADODB.Connection"
)‘创建ADO数据库连接实例
conn.Open"
DRIVER={MicrosoftAccessDriver(*.mdb)};
DBQ="
&
Server.MapPath("
\test.mdb"
)‘打开ADO数据库连接
%>
其中Server.MapPath("
)表示数据库的路径,注意不能是绝对路径,必须是虚拟目录。
如果您把数据库直接放在wwwroot目录下,则路径就是\test.mdb;
如果您放在自建的虚拟目录abc下,则路径就是\abc\test.mdb。
查询表:
setrs=server.CreateObject("
adodb.recordset"
)‘创建ADO数据集实例
sqlstr="
select*fromCompany"
‘查询SQL语句
rs.opensqlstr,conn,1,1‘打开一个查询记录集
遍历记录集
DimstrTemp
strTemp="
‘遍历记录集
rs.movefirst
Whilenotrs.eof
strTemp=strTemp+CStr(rs("
QQ"
))‘指定字段,从当前记录中提取值
strTemp=strTemp+"
:
rs.movenext
Wend
Response.Write(strTemp)‘输出网页元素
关闭数据库连接
rs.close
conn.close
setrs=nothing
setconn=nothing
B、编写网页元素
ASP程序的目的是动态生成一个完整的网页,用以返回给浏览器,故需要编写一个完整的网页源码。
ASP语句部分是可以嵌在网页源码中的任何地方的。
网页元素的输出有两种方式,一种是直接编写,另一种是使用ASP的Response方法。
前者不需要嵌在ASP语句中,后者需要嵌在ASP语句中(如:
%response.write(“测试<
br>
”)%>
)。
动态生成网页元素:
DimstrImgName
DimnIndex
nIndex=0
rs.movefirst
Whilenotrs.eof‘遍历记录集
response.write("
TDwidth=100>
公司ID:
response.write(rs("
CompanyID"
))
TDwidth=180>
公司名称:
CompanyName"
联系号码:
response.