网络编程
位置:首页>> 网络编程>> XML编程>> 用XML结合数据库,给服务器减负(3)

用XML结合数据库,给服务器减负(3)

作者:殷亮  发布时间:2007-10-31 09:40:00 

标签:xml,数据库,asp,服务器

我们的思路是:

1.客户端向服务器的某个ASP程序发出查询条件。

2.该ASP程序响应,并连接数据库。

3.数据库将查询结果返回给该ASP程序。

4.获得数据后,用ASP程序将数据格式化为XML格式, 从而将查询结果建立为该ASP的内嵌式XML对象。

5.在客户端实现XML的分页(分页方法类似于数据库分页)

6.此后,无论是客户端将查询结果翻多少页看多少遍,均不会再与服务器发生交互。

 另外,就算是客户端断开网线,也仍然可以浏览还未浏览的分页页面。

下面是我写的一个歌曲在线播放程序页面程序,由两个文件构成:

songList.mdb 一个数据库,装载着歌曲信息。songList.asp ASP程序,数据库中的数据格式成XML,页面完全显示后,无论点多少次“下一首”,也不会与服务器交互。
◆songList.asp◆      


<html>
<head>
<title>殷亮的在线播放</title>
<style type="text/CSS">
<!--
.input 
{
background-color: #000000;
border: #000000;
color: #FF9900;
}
-->
</style>
</head>
<body bgcolor="#000000" text="#FF9900">
<% ''''''''''''''''''''连接数据库'''''''''''''''''''''''''
set songCon = Server.CreateObject("ADODB.connection")
conPath = Server.MapPath("songList.mdb")
conStr = "DRIVER={Microsoft Access Driver (*.mdb)}; dbq="
songCon.open(conStr & conPath)
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "Select * from songList",songCon,3,3
%>
<!--动态生成内嵌式XML文档,"在线播放"是根标记-->
<xml id = "xmlFile">
<在线播放>
<% 
If not rs.eof then
while not rs.eof
%>
<歌曲>
<歌名><%= trim(rs("song_name")) %></歌名>
<URL><%= trim(rs("song_url")) %></URL>
<演唱者><%= trim(rs("songer")) %></演唱者>
<歌词><%= trim(rs("song_lyrics")) %></歌词>
</歌曲>
<% 
rs.movenext
wend
End If 
%>
</在线播放>
</xml>
<div id="Layer1" style="position:absolute; width:500px; height:59px; z-index:1; left: 118px; top: 4px;">
 <!--Window Media Player控件--> 
 <OBJECT classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" width="500" height="43" id="player" style="WIDTH: 500px; HEIGHT: 43px" VIEWASTEXT>
   <PARAM NAME="AudioStream" VALUE="-1">
<PARAM NAME="AutoSize" VALUE="0">
<PARAM NAME="AutoStart" VALUE="-1">
<PARAM NAME="AnimationAtStart" VALUE="-1">
<PARAM NAME="AllowScan" VALUE="-1">
<PARAM NAME="AllowChangeDisplaySize" VALUE="-1">
<PARAM NAME="AutoRewind" VALUE="0">
<PARAM NAME="Balance" VALUE="0">
<PARAM NAME="BaseURL" VALUE="">
<PARAM NAME="BufferingTime" VALUE="5">
<PARAM NAME="CaptioningID" VALUE="">
<PARAM NAME="ClickToPlay" VALUE="-1">
<PARAM NAME="CursorType" VALUE="0">
<PARAM NAME="CurrentPosition" VALUE="-1">
<PARAM NAME="CurrentMarker" VALUE="0">
<PARAM NAME="DefaultFrame" VALUE="">
<PARAM NAME="DisplayBackColor" VALUE="0">
<PARAM NAME="DisplayForeColor" VALUE="16777215">
<PARAM NAME="DisplayMode" VALUE="0">
<PARAM NAME="DisplaySize" VALUE="4">
<PARAM NAME="Enabled" VALUE="-1">
<PARAM NAME="EnableContextMenu" VALUE="-1">
<PARAM NAME="EnablePositionControls" VALUE="-1">
<PARAM NAME="EnableFullScreenControls" VALUE="0">
<PARAM NAME="EnableTracker" VALUE="-1">
<PARAM NAME="Filename" VALUE="">
<PARAM NAME="InvokeURLs" VALUE="-1">
<PARAM NAME="Language" VALUE="-1">
<PARAM NAME="Mute" VALUE="0">
<PARAM NAME="PlayCount" VALUE="1">
<PARAM NAME="PreviewMode" VALUE="0">
<PARAM NAME="Rate" VALUE="1">
<PARAM NAME="SAMILang" VALUE="">
<PARAM NAME="SAMIStyle" VALUE="">
<PARAM NAME="SAMIFileName" VALUE="">
<PARAM NAME="SelectionStart" VALUE="-1">
<PARAM NAME="SelectionEnd" VALUE="-1">
<PARAM NAME="SendOpenStateChangeEvents" VALUE="-1">
<PARAM NAME="SendWarningEvents" VALUE="-1">
<PARAM NAME="SendErrorEvents" VALUE="-1">
<PARAM NAME="SendKeyboardEvents" VALUE="0">
<PARAM NAME="SendMouseClickEvents" VALUE="0">
<PARAM NAME="SendMouseMoveEvents" VALUE="0">
<PARAM NAME="SendPlayStateChangeEvents" VALUE="-1">
<PARAM NAME="ShowCaptioning" VALUE="0">
<PARAM NAME="ShowControls" VALUE="-1">
<PARAM NAME="ShowAudioControls" VALUE="-1">
<PARAM NAME="ShowDisplay" VALUE="0">
<PARAM NAME="ShowGotoBar" VALUE="0">
<PARAM NAME="ShowPositionControls" VALUE="-1">
<PARAM NAME="ShowStatusBar" VALUE="0">
<PARAM NAME="ShowTracker" VALUE="-1">
<PARAM NAME="TransparentAtStart" VALUE="0">
<PARAM NAME="VideoBorderWidth" VALUE="0">
<PARAM NAME="VideoBorderColor" VALUE="0">
<PARAM NAME="VideoBorder3D" VALUE="0">
<PARAM NAME="Volume" VALUE="0">
<PARAM NAME="WindowlessVideo" VALUE="0">
</OBJECT>
</div>
<div id="Layer3" style="position:absolute; width:200px; height:115px; z-index:3; left: 120px; top: 140px;"><img src="P_online.jpg" width="300" height="170"></div>
<div id="Layer4" style="position:absolute; width:191px; height:54px; z-index:4; left: 430px; top: 199px;"> 
 <table width="190" height="52" border="1" align="right" bordercolor="#000000" bgcolor="#FF9900">
   <tr>
     <td height="23" valign="bottom"> 
       <div align="center"></div>
         
       <div align="right">
         <input name="btnPre" type="button" disabled="true" id="btnPre" value="上一首">
       </div></td>
   </tr>
   <tr>
     <td valign="top">
<div align="right"> 
         <input name="btnNext" type="button" id="btnNext" value="下一首">
       </div></td>
   </tr>
 </table>
</div>
<div id="Layer2" style="position:absolute; width:503px; height:58px; z-index:2; left: 120px; top: 67px;"> 
 <table width="501" border="1">
   <tr> 
     <td width="100"><font color="#FFFFFF" size="2">播放内置歌曲:</font></td>
     <td width="317">
  <SELECT name="list" size="1" id="list" style="WIDTH: 328px; BACKGROUND-COLOR: darkorange">
 <!--用循环来初始化下拉列表-->
         <script language="VBScript">
set xml=xmlFile.recordset
xml.MoveFirst
dim num
for num=0 to xml.RecordCount-1
document.write("<OPTION value="&xml("url")&">"&xml("歌名")&"</OPTION>")
xml.MoveNext
next
xml.MoveFirst 
</script>
  </SELECT>
 </td>
     <td width="62"><div align="right">
         <input name="btnLAN" type="button" id="btnLAN" value="播放">
       </div></td>
   </tr>
   <tr> 
     <td><font color="#FFFFFF" size="2" >播放网络歌曲:</font></td>
     <td><input name="textURL" type="text" id="textURL" style="WIDTH: 328px; BACKGROUND-COLOR: darkorange;color: #000000;"></td>
     <td><div align="right">
         <input name="btnNET" type="reset" id="btnNET" value="播放">
       </div></td>
   </tr>
 </table>
</div>
<div id="Layer5" style="position:absolute; width:500px; height:20px; z-index:5; left: 120px; top: 320px;"> 
 <p><font color="#FFFFFF" size="2">正在播放: 
   <input name="textSonger" type="text" class="input" id="textSonger" size="15">
   演唱的 
   <input name="textSongName" type="text" class="input" id="textSongName" size="35">
   </font></p>
</div>
<div id="Layer6" style="position:absolute; width:500px; height:150px; 
z-index:6; left: 120px; top: 349px;">
 <textarea name="area" cols="68" rows="15" id="area" 
  style="BORDER-RIGHT: white double; BORDER-TOP: white double; 
BORDER-LEFT: white double;COLOR: #000000; DIRECTION: ltr; 
BORDER-BOTTOM: white double;BACKGROUND-COLOR: darkorange; 
TEXT-ALIGN: left">
 </textarea>
</div>
<!--各按钮的单击事件-->
<script language="VBScript">
sub play()
textSonger.value=xml("演唱者")
textSongName.value=xml("歌名")
textURL.value=""
area.value=xml("歌词")
player.filename=xml("URL")
if xml.AbsolutePosition=xml.recordcount then
btnNext.disabled=true
else
btnNext.disabled=false
end if
if xml.AbsolutePosition=1 then
btnPre.disabled=true
else
btnPre.disabled=false
end if
end sub
sub btnLAN_onclick
xml.MoveFirst
while xml("URL")<>list.value
xml.MoveNext
wend
call play()
end sub
sub btnNET_onclick
player.filename = textURL.value
textSonger.value = ""
textSongName.value = ""
area.value = "自定义网络歌曲"
end sub
sub btnPre_onclick
xml.MovePrevious
list.selectedIndex = list.selectedIndex - 1
call play()
end sub
sub btnNext_onclick
xml.MoveNext
list.selectedIndex = list.selectedIndex + 1
call play()
end sub
</script>
</body>
</html>

现在,你知道怎么给服务器减负了吗?^-^本文旨在探讨,如有错漏,欢迎指正与讨论。


感谢站长miles这些日子来不倦的帮助,无以回报,唯有灌上此文。

0
投稿

猜你喜欢

  • 如何让我的网页自动适应客户端的屏幕分辨率?然后用下列办法进行自动推送:<% @language="vbscript
  • 虽然淘宝商城的名字中带有“商城”两字,但是很显然的,淘宝商城并不是一个B2C商城,淘宝商城仍只是一个C2C平台,充其量只是个收费版的淘宝。在
  • Function content_Code(Str) dim ary_String,i,n,n_pos&nbs
  • 现在网页设计师除了把页面做的漂亮以外,越来越注重“用户体验”,就是要做“别让用户思考”的网页,使网站真正做到“可用性”。望望结合几年的工作经
  • 一个js代码,图片实时变形一幅图片,长度\宽度之大小与比例都不停地变化,如同哈哈镜的效果,很能引人注目,用在网页上,可以给人意外的惊喜!&l
  • 在 CodeBit.cn 的论坛中,有人问 Javascript 中如何截取小数位并实现四舍五入,这是一个很常用的 js 技术,帖子中也有网
  • 要向数据库中添加超级链接,要经过两个步骤,一是在表中定义字段类型为“超级链接”,一是向此字段中添加数据。要在表中定义字段类型为“超级链接”,
  • 相信用过Gmail的人都知道Gmail有一个草稿自动保存的功能,每过一段时间,Gmail都会自动保存邮件草稿,这样在一些突 * 况下就能快速地
  • 简单的XML操作:XML文件创建把下面的代码复制到按钮事件中编译执行后可在相应物理路径中产生Pos.xml文件XmlTextWriter x
  • “'验证码'等于'流氓软件'”这句话本身存在逻辑问题,因为“验证码”并不是一个软件,而是软件里的一个功能。这
  • 现在电子商务网站的设计,正面临着一系列的挑战,其中最主要的挑战是:我们尝试建立一种用户体验,来提高用户在线购物的可能性。为了对抗网上激烈的竞
  • 今天在GOOGLE上查图片资料,这一幕真让我纠结啊:使用【向前】【向后】这种说法,就默认了有一个对比坐标,那就是当前显示的4张缩略图。点击【
  • 作为一名数据库管理员,在进行代码迁移之前,我总是尽力给提交于开发环境的代码一个完整的面貌。但是,不得不承认,我不能保证不发生任何可能破坏开发
  • 我生平不爱学习,所以说不出什么洋洋洒洒的大道理,貌似也写不出妙语连珠的学术文章,有感于现在宅到极致的生活状态,故一篇图文并茂的文章诞生了(大
  •   该域名查询系统写的很简单,只是实现了功能使用XmlHttp来获取远程查询结果,实际上就是小偷程序!相关推荐:域名注册情况查询/
  • 本文将展示一个开源JavaScript库,该脚本库给AJAX应用程序带来了书签和后退按钮支持。在学习完这个教程后,开发人员将能够获得对一个A
  • master库对于SQLServer来说,是很重要的系统数据库,保存着所有Sqlserver的用户信息、数据库信息等,当数据库崩溃时,mas
  • 这篇论坛文章主要介绍了SQL Server 2005数据库镜像的配置脚本,详细内容请大家参考下文:SQL Server 2005数据库镜像配
  • Data URIData URI是由RFC 2397定义的一种把小文件直接嵌入文档的方案。通过如下语法就可以把小文件变成指定编码直接嵌入到页
  • 很多时候,我们都在说设计需要引导用户,尤其是在对初级用户的引导上,很大程度决定着产品能否快速聚拢用户的可能;但同样很多时候,用户并不需要引导
手机版 网络编程 asp之家 www.aspxhome.com