资源描述
目 录
摘要-------------------------------------------------------------------------3
前言-------------------------------------------------------------------------4
第一章 概述--------------------------------------------------------------5
1.1 ASP技术简介绍--------------------------------------------------5
1.2 ASP对象,属性介绍------------------------------------------------6
1.3 ASP网页的运行环境---------------------------------------------6
1.4 数据库access介绍-------------------------------------------------8
1.5 ASP开发工具介绍------------------------------------------------8
第二章 网上答疑系统实现--------------------------------------------9
2.1 系统简单介绍------------------------------------------------------9
2.2 常见问题解决-----------------------------------------------------10
第三章 各个部分功能及实现----------------------------------------13
3.1 用户登陆及主界面-----------------------------------------------13
3.2 课程讨论区--------------------------------------------------------15
3.3 自由讨论区--------------------------------------------------------18
3.4 名词解释系统-----------------------------------------------------24
第四章 心得体会-------------------------------------------------------29
谢辞------------------------------------------------30
参考文献--------------------------------------------31
内 容 摘 要
网上答疑系统是使用ASP+数据库开发的面向对象的数据.信息管理系统,该系统主要用于在校学生课程答疑。该系统界面友好,操作简单,易学易用,从总体方案上力求达到该软件所需的目标要求。本系统由五个部分组成,每个部分实现不同的功能,各个部分通过对数据库的调用,实现网上答疑的目的。
本系统包含了多种网上答疑的方式,学生可以根据自己喜欢的方式,对课程的疑问提出问题,由管理员解答或系统自动回答,提高学习的效率。
关键词:网上答疑系统 数据库 ASP
Contents summary
On-line ask-and-answer system is a student database that use what ASP and MS Access DB develop to face to the object the information management the system, that system to primarily used for the usual management in student's couse ask-and-answer. The system's interface the amity, operation is simple, easy to learn easily use, and try hard for the target request for needing of the software's from the total project. This system is made up of five parts, each part realizes different function, the ones that adopted to the database in each part were transfered, realized the purpose to answer questions on the net. This system includes many kinds of ways to answer questions on the net, students can be according to one's own way to like, the doubt to course puts forward the question, answered by the administrator or the system is answered automatically, improve the efficiency of study.
Key phrase: On-line ask-and-answe database asp
前 言
近几年来,我国计算机事业的变化之大、发展之快是任何人都始料不及的。目前,计算机已进入社会各行各业之中,成为其不可分割的一部分。各专业学生,各行业的科技人员、管理干部、工作人员都迫切要求学习计算机、使用计算机。
随着二十一世纪信息时代的到来,随着社会的发展,人们生活水平的不断提高,管理必将实现现代化,各种大型企业不断涌现,管理部门的工作者都承担着繁重的任务,巨大的工作量、大量的数据统计、分析、计算等工作给他们的工作带来的很大的麻烦,增加了工作的难度,而且,长时间的工作易出错,降低工作效率。所有这些问题都有待于进一步改进。所以对企、事业单位利用计算机高科技手段进行管理势在必行。
ASP(active server page,活动服务器网页)是一种运行与服务器端的WEB应用程序的开发技术,它既不是一种语言,也不是一种开发技术,而是一种服务器端的脚本语言环境。
ASP与HTM相比的优点
ASP与HTML相比,其最大的优势在于三个方面:在创建动态、交互式站点方面,ASP功能强大、处理方式灵活;由 ASP脚本语言是由服务器端来解释和运行,动态生成普通的HTML页面,然后再传送到客户端供浏览,因而对客户端浏 览 器要求相对较低,并不要求其必须支持特定的某些脚本语言 如javascript、JScript、VBScript、Perl 等等;由于传送到客户 端 的只是解释后HTM页面,因而有效地保护了面开发者的知识 产权。
Asp组件的开发具有以下优点:
调用方便,节省代码
安全性高
支持事务处理,多组件联合
运行速度快
升级、修改组件不需修改页面,因此扩展性好
第一章 ASP技术概述
1.1 ASP技术简介
ASP就是Active Server Pages 的简称。
ASP是微软公司推出的意图取代CGI的新技术。通过它,用户可以使用几乎所有的开发工具来创建和运行交互式的动态网页,如反馈表单的信息收集处理、文件上传与下载、聊天室、论坛等等,实现了CGI程序的功能但是又比CGI简单,而且容易学习。由于ASP使用基于开放设计环境的Active X技术,用户可以自己定义和制作组件加入其中,使自己的动态网页具有几乎无限的扩充能力。它还可利用ADO(Active Data Object,微软的一种新的数据访问模型)方便地访问数据库,能很好地对数据进行处理
ASP是一套微软开发的服务器端运行的脚本平台,ASP 内含于 IIS当中,目前IIS最高版本为5.0版本
通过 ASP 我们可以结合HTML网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。同时,asp也支持VbScript和JavaScript等脚本语言,默认为VbScript。
ASP是经过服务器解析之后再向浏览器返回数据,所以有了 ASP 就不必担心客户的浏览器是否能运行你所编写的代码。因为所有的程序都将在服务器端执行,包括所有嵌在普通 HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度
但是这样也导致一个问题,运行ASP页面相对于普通的html页面要慢一点,因为普通的html页面只需要浏览器就能够解析,而ASP则必须是服务器将整页的代码都执行一篇之后再发送数据。
对于ASP的优点特点,我就不多讲了。但是ASP的安全性还是要提一提,由于代码是需要经过服务器执行之后才向浏览器发送的,所以在客户端看到的只能是经过解析之后的数据,而无法获得源代码,故编写者不用担心自己的代码会被别人剽窃。
1.2 ASP对象,属性介绍
Appliction对象
方法:appliction.lock appliction.unlock
事件:appliction_onstrat appliction_onend
Resquest对象
集合:Resques.querystring Resques.form Resques.cookies
Resques.servervariables Resques.clientcertificate
属性:counter= Resques.totalbytes
方法:variant=request.binaryread
Response对象
集合:Response.cookies
属性:Response.buffer=booleanvalue Response.expires=intnum
ResponseexpiresAbsolute
方法:Response.write Response.redirect Response.clear
Response.end Response.flush
Session对象
属性:Session. SessionID Session.Timeout
方法:Session.abandon
事件:Sub Session_onstart…End Sub
Sub Session_onend…End Sub
Server对象
属性:Serve.scripttimeout
方法:Serve.createobject(“proID”) Serve.mapPath
Serve.HTMLEncode
1.3 ASP网页的运行环境
Asp的运行需要Windows操作系统,9x下需要安装PWS;而NT/2000/XP则需要安装Internet Information Server(简称IIS)。
PWS安装与使用:
1.找到“Win98完全版”安装光盘,光盘有add-ons\pws文件夹。在pws文件夹里,双击setup.exe,安装完毕。
2.然后找出C:\WINDOWS\SYSTEM\inetsrv\pws.exe,打开了“个人Web管理器”。
3.在主屏的“发布”显示pws当前状态。如果已经停止,你就点击“启动”。
4.需要设虚拟目录。方法是,在个人Web管理器点击“高级”,然后选“添加”,别名很重要,例如起别名为spa。“浏览”找到你的主页目录所在文件夹,例如 D:\我的作品\我的网页。
5.把读取、执行、脚本都打上勾,确定。
6.把“启用默认文档”和“允许浏览目录”都打上勾。默认文档写为index.htm,index.asp
7.此调试完毕。然后,在IE输入 http://127.0.0.1/spa 就可以浏览你的ASP网页了。
IIS安装与使用
Win2000的IIS是5.0版,是ASP的开发平台。安装方法是,插入Win2000或WinXp安装盘,点击“开始→设置→控制面板→添加/删除程序→添加/删除Windows组件”,然后出现下图,把第一项IIS打上勾就可以了:
提示示插入光盘:
这时一定要找到I386这个目录,并且这两次都需要重新查找路径,一路确定就安装完毕了﹗
1.4 数据库access介绍
access数据库是微软公司开发的一种面向中小型用户的数据库管理系统,它的界面和OFFICE家族其他工具一样通俗易懂,是一种简单好用的数据库管理工具。
1.5 ASP开发工具介绍
和HTML文件一样,ASP也是纯文本文件。所以,你甚至可以使用“记事本”编辑ASP文件。当然,有个专门设计的代码编辑器,可以使你的工作事半功倍。
一、Visual InterDevVisual InterDev是Microsoft为开发ASP程序专门推出的集成开发环境,功能非常强大。
1、 可以对ASP代码进行颜色识别,自动完成代码。例如你输入“response.”之后,VI会自动把response.的方法列举出来,供你选择。
2、 VI中带有一个代码库,调用预先设计好的DTC(DesignTime Control),可以非常简单的实现表单处理、数据库操作等等复杂的功能。
3、 内置数据库管理工具,可以直接进行数据库查询、修改工作。
4、 内有RS(Remote Script),支持服务器、客户机间代码调用。
5、 群体开发协作管理功能,支持多人同时开发一个网站。
但是,VI对HTML编辑的支持不大够,在设计页面效果的方面,不能得心应手。
二、HomeSite如果你的网站不大,ASP程序不是很庞大的话,你可以使用Allaire公司的HomeSite编辑你的ASP程序。作为一个HTML代码编辑器,HomeSite对HTML的支持可以说登峰造极。颜色识别、自动完成、提示帮助等等,可以使你的HTML编辑非常轻松。 在HomeSite4.0中,提供了对ASP的简单支持。有一个ASP工具栏,上面有ASP常用的符号。HomeSite也可以自动使ASP的几个常用词高亮显示,帮助阅读代码。
三、其它还有很多其它的编辑工具可以编辑ASP。只要是一种代码编辑器,可以简化你的编辑工作的,你都可以根据个人喜好选用。如UlraEdit、HotDog、FrontPage 98和Dreamweaver等等。
第二章 网上答疑系统实现
2.1 系统简单介绍:
主要思想:网上答疑系统通过运用ASP+Access数据库来实现。
公享数据库连接文件:conn.inc实现ASP与数据库的连接。
用户登陆界面:login.asp实现用户的登陆
系统主页面:main.asp包含5个功能
1:课程讨论区。学生可以通过留言系统提出自己的课程上的一些疑问。管理员以回复的形式对学生的问题进行解答。
内置管理员帐户admin 密码:admin
2:自由讨论区。学生可以在类似聊天室的环境中对课程上的问题进行相互交流,内置管理员帐户admin 密码:admin
管理员可以使用踢人,禁言等功能。
3:名词解释。通过输入关节字对数据库进行查询,输出查询结果,是一个自动答疑的功能。
4:相关资料。提供一些计算机方面的资料,陆续补充中。
5:网页特效代码。提供一些代码供大家使用。
2.2 常见问题解决:
1. 在ASP中使用SQL语句
在SQL的世界里,最最基础的操作就是SELECT 语句了。在数据库工具下直接采用SQL的时候很多人都会熟悉下面的操作:
SELECT what FROM which Table WHERE criteria执行以上语句就会创建一个存放其结果的查询。
举例说明,不妨假设你的数据库内有个数据表,名字是Products ,现在你想取出这个表里的全部记录。然后你就编写了下面的代码:
SQL ="SELECT * FROM Products"
以上代码——SQL语句的作用就是取出表内的全部数据——执行后将会选出数据表内的全部记录。不过,要是只想从表内取出某个特定列,比如p_name。那就不能用 * 通配符了,这里得键入具体某列的名字,代码如下:
SQL ="SELECT p_name FROM Products"
执行以上查询之后Products 表内、p_name 列的内容就会全被选取出来。
2. .如何用Asp判断你的网站的虚拟物理路径.
使用Mappath方法
< p align="center" >< font size="4" face="Arial" >< b >
The Physical path to this virtual website is:
< /b >< /font >
< font color="#FF0000" size="6" face="Arial" >
< %= Server.MapPath("\")% >
< /font >< /p >
3. 我如何知道使用者所用的浏览器?
使用the Request object方法
strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strBrowser,"MSIE") < > 0 Then Response.redirect("ForMSIEOnly.htm")
Else
Response.redirect("ForAll.htm")
End If
4..SQL常用命令使用方法:
(1) 数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]"
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
sql="select * from 数据表 where 字段名 in (值1,值2,值3)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
(6) 数据表的建立和删除
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
5. 如何注册组件
有两种方法。
第一种方法:手工注册 DLL 这种方法从IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下来执行,进入到包含有DLL的目录,并输入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll
第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下:
1) 打开IIS管理控制台。
2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。
3) 单击"create an empty package"。
4) 给该包命名。
5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。
6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。
6) 选择 "install new component" 。
7) 找到你的.dll文件然后选择next到完成。
要删除这个对象,只要选择它的图标,然后选择delete。
附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。
6. 常见错误类型:
有三种主要的错误类型:
编译错误:
这种错误出现一般都是代码的语法问题。因为编译错误而导致辞ASP停止运行。
运行错误
这个错误是发生在你准备运行ASP时的。例如:如果你试图给一个变量赋值,但是却超出了
变量允许的范围。
逻辑错误
逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了的。这就需要我们彻头彻尾地检查我们的代码。
因为编译错误一般是和逻辑错误一起发生的,一般都能显示出来,所以我们担心的就只是运行错误。它都终止ASP的运行,而且给用户丢下一堆很不友好的文字。
第三章 各个部分功能及实现
3.1 用户登陆及主界面
将全站文件放在本地站点根目录中,主页文件index.asp。
内容为<% Response.Redirect "login.asp" %>从新定向到用户登陆界面login.asp。
访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。例如将代码写成下面的形式以加快脚本引擎处理速度:
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
If strFirstName="" Then strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Else
strFullName=strTitle & strFirstName & " " & strLastName
End If
用户必须通过输入用户名和密码进入。
<form method="post" action="check.asp">
<input type="text" name="userid" class="smallInput" size="20">
<input type="password" name="pwd" class="smallInput" size="20">
系统将用户输入的用户名和面传送到check.asp。check.asp是对用户名和密码进行检查的一个文件。文件从longin.asp那里读取用户名和密码userid=request("userid") pwd=request("pwd")
然后查询数据库,检查用户名和密码是否存在,如果不存在就返回relogin.asp进行重新登陆。如果存在就读取数据库中相关的内容userid=rs("userid"),username=rs("username"),department=rs("department"),speciality=rs("speciality"),rank=rs("rank")
并保存cookies。
Response.Cookies("userid")=userid,Response.Cookies("username")=username Response.Cookies("pwd")=pwd Response.Cookies("department")=department
Response.Cookies("speciality")=speciality Response.Cookies("rank")=rank
然后转到系统主界面main.asp
在第二章已经介绍过,这里不再重复。
3.2 课程讨论区
用户可以通过点击主页面中的课程讨论区连接到这里。
Index.asp:学生留言主界面,学生可以点击“链接”对课程上的提问进行留言。
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_guestbook_STRING
Recordset1.Source = "SELECT * FROM f_bbs ORDER BY id DESC"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
用ASP发送E-MAIL,你需要安装一个A S P部件。有几种第三方厂商的部件你可以使用。但是在IIS4下,你可以使用CDONTS。
1.检查你是否安装了SMTP服务。OPTION PACK缺省安装时是包括SMTP服务的。
SMTP服务安装后,在你的system32目录下会有一个文件叫CDONTS.DLL。
2.你可以用下面的简单脚本通过ASP发送E-MAIL:
$#@60;%
Dim MailObject
Set MailObject = Server.CreateObject("CDONTS.NewMail")
MailObject.Send "stelede@.au","stelede@.au","My subject","My text"
%$#@62;
是不是很简单?
发送附件
CDONTS的一个常用特性是用来在E-MAIL中发送附件。
$#@60;%
Dim MailObject
Set MailObject = Server.CreateObject("CDONTS.NewMail")
att_file="c:\attachments\StandardPolicy.txt"
f_name="Policy.txt"
MailObject.From="stelede@.au"
MailObject.To="j_smith@"
MailObject.Subject="Subject Text Here"
MailObject.Body="Body Text Here"
MailObject.AttachFile att_file,f_name
MailObject.Send
%$#@62;
<form ACTION="<%=MM_editAction%>" METHOD="POST" name="form1">
login.asp:系统管理员登陆界面,内置管理员帐户admin,密码admin.
New.asp:留言填写文件,学生填写好的留言内容就会添加带数据库中。
Sorry.asp:管理员登陆错误界面,点击“返回”回到login.asp
Sub.asp:管理员资料修改界面,这里可以修改管理员资料,管理员帐户名及密码。
REP.asp:管理员回复界面,管理员通过此文件对学生的提问进行回复,恢复内容自动添加到数据库中
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_guestbook_STRING
Recordset1.Source = "SELECT * FROM f_bbs"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
del.asp:留言删除文件,管理员有权利对数据库中的留言进行删除。
3.3 自由讨论区
这是一个类似聊天室的自己讨论区,大家可以把自己对课程的一些想法自由的阐述。
目前聊天室显示对话的方式一般有两种。一是每隔 x 秒就把整个对话显示区刷新一遍,此方的弊端显而易见:数据传输量大且屏幕有闪烁感;其二是有新的发言时,才将该内容传递给客户端,并添加在原有对话的尾部,此法数据传输量就比较小且屏幕是平滑滚动,视觉效果好。第一种方法的实现已经有很多资料介绍,因此本文将介绍第二种刷新方式。
设计思路:
⑴服务器端只保留最新的30条发言作为缓冲区,新的发言内容将最旧的发言挤出。
⑵每句发言都分配一个递增的序号。客户端最后出现的发言的序号记录在 Session 中。
⑶利用隐藏框架进行刷新,刷新时,将 Session 值与缓冲区的每句发言的序号进行比较,如果序号大于 Session 值说明该发言是新的,就将该发言的数据取出,并将该发言的序号值赋给 Session。
⑷对话显示区使用 document.open() 打开后,就不再关闭,当隐藏框架刷新时有新数据取出并传到客户端时,将这些原始数据格式化为要显示的内容(此工作可以在服务器端执行,但为减轻服务器的负担,就将对话的合成工作移交给客户),然后调用 document.writeln 方法将发言的内容写到对话显示区的尾部。
⑸在对话显示区中放置一段自动滚屏的代码,使屏幕自动向下滚动,并可通过发言区的复选框来选择是否自动滚屏。
实现方法:
一、本程序只需要 4 个文件即可实现:
⑴chat.asp:聊天室框架文件,负责初始化程序运行环境并随机分配四位数的数字做为用户名,再把页面从上到下分成四部分,顶、底两个框架高度为 0。
⑵chatfyq.htm:发言区,提供输入姓名、发言的文本框,及一个发言按钮和一个自动滚屏的开关(复选框),并定义在客户端执行的 JavaScript:checksays()(对发言进行有效性检测)、cls()(清空对话显示区的内容)、write()(初始化对话显示区,定义页面颜色、文字大小,并放置滚屏代码)、sw(username)(在对话区点击人名时,将人名写到发言框中)、w(un,sa,tn,dt)(将原始数据合成为完整的发言内容,并添加到对话显示区的尾部)。
⑶chatt.asp:此文件位于顶部的隐藏框架(高度为 0)中定时刷新,把新的发言的原始数据使用 <script Language=JavaScript>parent.f2.w("姓名","发言内容","原始姓名","发言时间")</script> 的格式输出到客户端,即可调用 chatfyq.htm 中定义的 w(un,sa,tn,dt) 函数来显示出发言内容。
⑷chatsay.asp:发言提交到此文件进行处理。此文件位于底部的隐藏框架中。将发言加入缓冲区后,立即执行和 chatt.asp 相同的代码段,将发言显示出来。(chatsay.asp 后面的代码和 chatt.asp 是相同的,之所以不在 chatsay.asp 后面使用 Response.Redirect "chatt.asp" 来调用,是为了加快速度,因为重定向方式需要建立两次连接:发言提交是连接一次,重定向时又要再连接一次,效率低。)
二、部分关键代码注释:
⑴初始化代码段:Application("chat_hh") 缓冲区中最后一句发言的序号、Session("chat_hh") 就是“设计思路⑶”中提到的 Session 值,用于记录客户端已显示的最后一句发言的序号:
'如果该序号为空,表明程序未初始化
If Application("chat_hh") = "" Then
'定义缓冲区数组,共 30 句发言
'每句发言占用 5 个位置:序号、姓名、发言内容、原始姓名、发言时间
Dim sd(150)
Application.Lock
'将数组赋值给 Application("chat_sd"),即:发言只保留在服务器内存中
Application("chat_sd") = sd
'定义初始
展开阅读全文