3.2.3具体实现方式及代码讲解 文字聊天室,有管理员功能,可踢人、提升管理员、查阅用户信息,文字聊天,私聊,支持表情,点歌等功能。聊天室用Access数据库和ASP技术制作。 copyright paper51.com 聊天室的设计都离不开数据库,因为服务器要把每个聊天室成员的发言、姓名(或昵称)、发言时间、表情等存放起来,以便各个浏览器读取。 内容来自论文无忧网 www.paper51.com Access数据库就可以实现这些功能。在Access数据库中建立一个数据库列表,该表至少要具备三个数据字段:用户姓名或昵称、时间、谈话内容。如果要记录多个信息,想说话表情,需要的显示颜色等则应再适当增添相应的字段。另外,如果支持悄悄话,还应当附加地址栏应以存放每个用户的IP地址。例如本聊天室: copyright paper51.com 利用Access建立一个名为“聊天室.mdb”的数据库,在该数据库中建立一个名为“chatroom”的数据表,其结构简单如下所示: copyright paper51.com 字段名称 数据类型 默认值 copyright paper51.com
用户昵称 文本 —— copyright paper51.com 发言时间 日期/时间 Now() 内容来自www.paper51.com
发言内容 备注 —— copyright paper51.com 在表的基础上要建立一个查询,因为传递至浏览器端的不能室所有的内容而是一部分,如最近十分钟内的谈话。因而该查询所需要的语句为: 内容来自论文无忧网 www.paper51.com
Select*Fromchatroom where datediff(“n”[发言时间],now()<10 Order by 发言时间Desc) http://www.paper51.com 同时,数据库访问组件访问服务器数据库可以通过浏览器查询服务器的后端数据库得到,ASP通过内置的数据库访问组件(ADODB)实现,ADO即ActiveDataObject,是专门针对Internet和Web数据库开发的,利用ADO查询数据库的步骤是: http://www.paper51.com (1)设置DSN"ADODB通过ODBC工作,因此要在ODBC中设置DSN(数据源名)。 内容来自www.paper51.com
(2)生成ADODB组件实例为: 内容来自论文无忧网 www.paper51.com
SetConnect=Server1CreateObject(/ADODB1Connection0) 内容来自www.paper51.com (3)连接数据库利用ADODB的成员函数Open和先前设定的DSN可以和数据库连接,ConnectOpen(/DSN=dsnname;UID=userID;PWD=password) 内容来自www.paper51.com
(4)执行查询指定Access查询语句:Access =/select*fromtablename 内容来自www.paper51.com 虽然ASP支持许多不同的程序语言(VBScript、Jscript、PerlScript),不过这些程序语言中,以VBScript对ASP的支持最为完整,使得VBScript成为ASP默认使用的程序语言。ASP程序代码可以将VBScript视为特殊的HTML标记。因为,只要在<%与%>之间的文字语句,都被视为在服务器端执行并以VBScript所编写ASP的程序代码,这样就可以使用<%~%>来取代 内容来自论文无忧网 www.paper51.com
<scriptlanguage=”VBScript”runat=”server”>~</script> copyright paper51.com
在ASP中常用的内置对象有5个分别是Response对象、Request对象、Session对象、Application对象和Server对象 paper51.com 关于Response对象的介绍 http://www.paper51.com 每一种程序语言或开发工具都有一定的与用户沟通的函数,Active Server Page内嵌两种对象,分别是超文本链接传输协议的请求和响应对象。在ASP中负责将信息传递给用户对象的就是Response对象。Response对象用于动态响应客户端请求(Request),并将动态生成的相应结果返回到客户浏览器中,使用Response可以动态创建Web页面,改变HTTP标题头,还可以自动将客户端重定向(Redirect)到一个指定的页面中,另外,如果要向客户端写入Cookies时,Response对象也是一种很好的工具。 copyright paper51.com 其中collection表示Response对象的集合,property表示Response对象的属性,method表示Response对象的方法。 copyright paper51.com 具体实现的语法如下: 内容来自论文无忧网 www.paper51.com Response.Write方法 内容来自论文无忧网 www.paper51.com
语法 copyright paper51.com Response.Write “sendingdata” http://www.paper51.com
功能 http://www.paper51.com 将数据或字符串传送到客户端浏览器。 内容来自论文无忧网 www.paper51.com 1. Write是Response的方法;sendingdata参数代表欲传送的数据。 paper51.com 2. Response.Write传送的数据为变体型(Variant)。若传送的数据是字符串,字符串前后必须使用“”双引号,将字符串包括起来;若字符串中间含有双引号必须重复双引号一次。 copyright paper51.com 3. (1)如果输出的数据是HTML标记,编写可省略Response.Write(2)VBScript将头尾用双引号框住的数据会视为字符串来处理。(3)Response.Write传送HTML标记,若只将头尾用双引号框住,里面的双引号没有去掉,执行时会发生错误的。这是因为在VBScript语法中,将两个双引号括起来的部分将视为字符串处理。 http://www.paper51.com
4. 使用单独一行的Response.Write方法传送数据或字符串至客户端,若超过1022字符,将会出现错误。如果传送超过1022个字符的字符串,请分成多行Response.Write输出,或者将字符串存到变量中,再用Response.Write将变量输出。 http://www.paper51.com 可使用“=”来代替Response.Write方法。 copyright paper51.com Response.End方法 内容来自论文无忧网 www.paper51.com 语法 paper51.com Response.End http://www.paper51.com 功能 paper51.com
结束ASP程序的执行。 http://www.paper51.com
当执行至Response.End,则接在此行后面的程序将不再执行。 copyright paper51.com 在聊天室中具体是这样实现的: paper51.com <% http://www.paper51.com
Response.Buffer =true http://www.paper51.com if notisarray(session("dv_user")) then 内容来自论文无忧网 www.paper51.com Response.Write "未登陆不能发言!" http://www.paper51.com
Response.End copyright paper51.com
这是在登陆之前的说明部分,用到了Response.Write方法。 paper51.com Response.Redirect方法 paper51.com 语法 copyright paper51.com Response.Redirect“URL” http://www.paper51.com
功能 http://www.paper51.com 1. URL参数用来指定网页所在网站文件夹与文件名,记得文件名要包含扩展名。 内容来自www.paper51.com
2. Response.Redirect方法必须在数据还没有传送到客户端的浏览器之前使用,否则会出现错误的情况。譬如使用Response.Redirect方法将浏览器连接到指定的网站或ASP文件时,应写在Response.Redirect方法之前才不会发生错误。 http://www.paper51.com 关于Request对象的介绍 内容来自www.paper51.com
Request对象的功能主要是用来取得客户端浏览器(Browser)所传送到服务器端的信息。譬如当我们在窗体上填完数据,按下“传送”按钮(Submit),则Request对象会根据窗体的名称取得客户端所键入的数据。其语法如下: 内容来自www.paper51.com 语法 copyright paper51.com Value=Requesr[.collection | method|property](“variablename”) copyright paper51.com
功能 paper51.com 取得客户端窗体各组件所输入的数据。 内容来自www.paper51.com 1. collection参数:是收集数据的集合(collection),我们可以将这些集合视为Request对象的子对象,或称为集合对象,下面即为Request对象所提供的5个字对象的功能说明: 内容来自论文无忧网 www.paper51.com (1) Form集合用来取得客户端窗体上所传过来的信息。 copyright paper51.com (2) QueryString集合用来取得客户端附加子阿ASP网址后的参数信息。 内容来自www.paper51.com
(3) ServerVariable集合用来取得服务器短的环境变量。 http://www.paper51.com (4) Cookies集合用来取得客户端保存的Cookies值。 http://www.paper51.com
(5) ClientCertificate集合用来取得客户端的身份认证信息。 paper51.com 2. method和property参数是指该对象的方法与属性。 copyright paper51.com
3. variablename参数随着子对象的不同而有不同的规定。 copyright paper51.com 4. 在ASP程序中使用多个Request的子对象,子对象间若使用相同的variablename(指变量名称或窗体字段名称),且省略接在Request对象后面的子对象名称不写,ASP会按照QueryString、Form、Cookies、ServerVariable先后次序来存取数据。 copyright paper51.com Request.Form集合 内容来自论文无忧网 www.paper51.com 语法 内容来自www.paper51.com
Request.Form(“filedname”) paper51.com 功能 copyright paper51.com 取得客户端窗体各组件所输入的数据。 内容来自论文无忧网 www.paper51.com
1. filedname为窗体的组件名称。若窗体的传送方式为method=”post”时可以使用Request.Form(“filedname”)来取得客户端传来窗体上指定字段所填写的数据。此种方式可传送较大量的数据(数据长度可大于256bytes),但速度较慢。当按下窗体上面的“传送”按钮时,浏览器会先将窗体的数据放在表头,也就是<head>~<head>之间,然后再将数据一次传送给服务器端。 copyright paper51.com 2. Request.Form(“filedname”)中的Form集合可省略不写,因此该语句可简写成Request. (“filedname”)。 paper51.com saystr=Request.Form("post_msg") paper51.com towho=Request.Form("towho") copyright paper51.com
addsays=Request.Form("addsays") paper51.com addwordcolor=Request.Form("addwordcolor") paper51.com sayscolor=Request.Form("sayscolor") 内容来自论文无忧网 www.paper51.com towhoway=Request.Form("towhoway") 内容来自论文无忧网 www.paper51.com gonggao=Request.Form("gonggao") http://www.paper51.com 注:这是聊天室登陆之前的说明部分,多次用到了Request.Form(“filedname”)的对象。 内容来自论文无忧网 www.paper51.com
Request.QueryString集合 paper51.com
Request.QueryString集合(或称子对象)的功能和Form差不多,唯一的差异在于前者可以直接取得加在地址后面的附加参数,这些参数通常以“?” 问号来连接,也就是说当在窗体输入数据完毕,单击“传送”按钮后会将窗体内的数据以问号开头,直接输入浏览器的地址栏“http://…?…”。Request.QueryString的语法如下: 内容来自www.paper51.com 语法 内容来自www.paper51.com Request.QueryString(”filedname”) 内容来自论文无忧网 www.paper51.com 功能 内容来自论文无忧网 www.paper51.com
取得客户端窗体所输入的信息。 copyright paper51.com |