📄 20-2.cfm.htm
字号:
<P ALIGN="JUSTIFY"><HTML></P>
<P ALIGN="JUSTIFY"><HEAD><TITLE>新的项目</TITLE></HEAD></P>
<P ALIGN="JUSTIFY"><BODY></P>
<P ALIGN="JUSTIFY"><h2>谢谢发表文章</h2></P>
<P ALIGN="JUSTIFY"><a href=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.asp</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>>返回主页</a></P>
<P ALIGN="JUSTIFY"></Body></P>
<P ALIGN="JUSTIFY"></HTML> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 在本页中,创建了一个叫做ThePost的变量用来记载这个Active Server Page的内容, 在这里面,整个Active Server Page作为一个很长的字符串来处理,下面仔细看一下 这个字符串的生成过程:</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>创建这个发表内容</P>
<P ALIGN="JUSTIFY">TheSubj=Server.cfmLEncode(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Request.Form(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>subject</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>))</P>
<P ALIGN="JUSTIFY">If TheSubj =</FONT><FONT SIZE=3>””</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> THEN TheSubj=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无标题</FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">ThePost=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><HTML><HEAD><TITLE></FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&TheSubj&</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></TITLE></HEAD><BODY></FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">ThePost=ThePost&</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>发表日期:</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&NOW&</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><Hr></FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">ThePost=ThePost&Server.cfmLEncode(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Request.Form(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Posting</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>))</P>
<P ALIGN="JUSTIFY">ThePost=ThePost&</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><!-- #INCLUDE VIRTUAL=</FONT><FONT SIZE=3>””</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>new.inc</FONT><FONT SIZE=3>””</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> --></FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">ThePost=ThePost&</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></BODY></HTML></FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">这个Active Server Page文件不仅包括了Form中传递过来的信息,还包括了日期信息 以及News.inc的一段用于动态显示的脚本。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY"> 对于引号在字符串中的赋值是采用连着两遍的引号输入来进行的,即,在字串赋值中两个连着的引号相当于一个引号。例如,将MyString赋值为下面这个字段</P>
<P ALIGN="JUSTIFY">我说:</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>你好</FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">那么赋值语句为MyString=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>我说:</FONT><FONT SIZE=3>””</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>你好</FONT><FONT SIZE=3>”””</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">不过,对于中文输入法的双字节引号,不需要这样处理。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 脚本的下一部分是给这个active Server Page起一个不重复的名字,你当然不希望新 的消息覆盖以前的,因此在存储该文件之前必须首先进行不重复的文件名的生成:再看这段脚本:</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>创建一个新的文件名(不重名)</P>
<P ALIGN="JUSTIFY">Set mylinks=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>MSWC.NextLink</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">TheName=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>item</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&mylinks.GetlistCount(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)+1&</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>.asp</FONT><FONT SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">TheNamePath=Server.Mypath(TheName)</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 由于使用了内容连接组件的Count属性,就可以通过从文本文件中的记录数目来命名以保证不会有重复了,这里文件名分别为item1.asp,item2.asp,item3.asp等等,每一个信息对应一个不同的名称,不过,提醒注意的是,如果从news.txt中删除了一些信息,那么文件命名重复的现象就会发生,因为这只是简单示例,所以没有做这些考虑处理。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 第三部分脚本是将将生成的ThsPost字符串以生成的TheNamePath路径名存入硬盘,这里面显然用到了FileSystemObject()方法来进行处理,那么详细的这种处理的介绍参见上一章。脚本如下:</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>保存该发表内容到文件中</P>
<P ALIGN="JUSTIFY">Set MyFileObj=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Scripting.FileSystemObject</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set MyOutStream=MyFileObj.CreatTextFile(TheNamePath)</P>
<P ALIGN="JUSTIFY">MyOutStream.Write ThePost</P>
<P ALIGN="JUSTIFY">MyOutStream.Close</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 最后部分是更新News.txt文件,该文件被内容连接组件用来检索信息,下面是这个更新部分的脚本:</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对内容连接组件所需文本文件的更新</P>
<P ALIGN="JUSTIFY">TheNews=Server.MyPath(</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set MyNews=MyFileObj.OpenTextFile(TheNews,8,TRUE)</P>
<P ALIGN="JUSTIFY">MyNews.WriteLine TheName&vbTab&TheSubj</P>
<P ALIGN="JUSTIFY">MyNews.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 如果该news.txt不存在,那么系统会自动创建这个文件,因此当讨论组中发表了第一个文件,系统就会创建这个news.txt。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 请注意这里面用到了VBScript的vbtab常量,这个常量就是tab键的作用,那么该news.txt必须用tab键进行URL地址和描述的分隔是上一章中介绍过的。</P>
<B><P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">讨论组主页</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 最后当然要创建讨论组的主页,这个页面就是显示各个信息的标题并提供连接,以及提供发表新文章的入口连接,下面是这个页面的全部脚本:</P>
<P ALIGN="JUSTIFY">例子:20.4讨论组主页</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><%</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>创建内容连接组件</P>
<P ALIGN="JUSTIFY">Set mylinks=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>MSWC.NextLink</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"><HTML></P>
<P ALIGN="JUSTIFY"><HEAD><TITLE>讨论组主页</TITLE></HEAD></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><BODY></P>
<P ALIGN="JUSTIFY">发布信息数:<%=Mylinks.GetListCount(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>) %></P>
<P ALIGN="JUSTIFY"><hr></P>
<P ALIGN="JUSTIFY">[<a href=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>post.cfm</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>> 发布新文章</a>]</P>
<P ALIGN="JUSTIFY"><UL></P>
<P ALIGN="JUSTIFY"><%</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>显示信息列表</P>
<P ALIGN="JUSTIFY">For i=1 to mylinks.GetListCount(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"><LI></P>
<P ALIGN="JUSTIFY"><a href=</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><%=mylinks.GetNthURL(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,i)%></FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>></P>
<P ALIGN="JUSTIFY"><%=mylinks.GetNthDescription(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>news.txt</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,i)%></a></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">next</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"></ul></P>
<P ALIGN="JUSTIFY"></body></P>
<P ALIGN="JUSTIFY"></html></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 很容易理解,这个页面就是首先创建一个内容连接组件的事例,然后根据news.txt去判断连接文件的数目并显示,连接post.cfm没什么可以解释的,然后根据连接文件的数目进行For </FONT><FONT SIZE=3>…</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Next循环,将其描述显示出来并且连接相应URL地址。</P>
<P ALIGN="JUSTIFY">那么这么一个例子对于创建讨论组很具有代表性,读者甚至可以直接利用这里面提供的脚本来制作自己的讨论组,当然,这个讨论组主要是教学性质,过于简化,下面部分讨论怎样扩展其功能。</P>
<B><P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">讨论组示例功能拓展</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 这个简单的讨论组显然只能应用于小规模的范围,几个知交好友建立联系网站,互通声息还可以,一旦文章增加,很多问题解决不了,比如说,有人同时进行文章发布尝试,这个内容连接组件就没有考虑这种问题。利用诸如SQL Server这样的数据 库来创建讨论组就可以大大增强其功能应用,当然,这需要ActiveX Data对象,( 本书第22章将进行详细介绍),和内容连接组件不同的是,数据库进行大量信息的存储和读取将更加有效。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 不过,这个内容连接组件的示例还是可以使你了解怎样对一定数量的文件连接进行有效的处理,这个组件所完成的动态页面更新是一个优秀的的站点负责人应当学会的。</P></FONT></BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -