动网论坛源代码解读及其向JSP的移植——第五章,探索Application中缓存的数据
根据前面几章的分析,我们可以看到index.asp的运行流程:构造objForum对象...
构造objTemplates对象...
构造objUserOnline对象...
调用objForum.getForumSetting()...
调用objForum.checkUserLogin()...
调用main()...
我们知道了在objForum对象和objUserOnline对象的构造函数中进行的一些初始化操作,但是,一直到现在,我们还不清楚index.asp是怎样在浏览器中显示用户界面的。这一章,我们就来解决这个问题。
首先,我们再来复习一下Main()函数:
Sub Main()
Dvbbs.LoadTemplates("index")
If Dvbbs.BoardID=0 Then
Dvbbs.Stats=Replace(template.Strings(0),"动网先锋论坛",Dvbbs.Forum_Info(0))
Response.Write Dvbbs.mainhtml(18)
Dvbbs.Nav()
Dvbbs.ActiveOnline()
GetForumTextAd(0)
BoardList()
Else
Chk_List_Err()
TopicMode=0
If Request("topicmode")<>"" and IsNumeric(Request("topicmode")) Then TopicMode=Cint(Request("topicmode"))
If Dvbbs.Board_Setting(43)="0" Then
Dvbbs.Stats=Dvbbs.LanStr(7)
Else
Dvbbs.Stats=Dvbbs.LanStr(8)
End If
Response.Write Dvbbs.mainhtml(18)
Dvbbs.Nav()
Dvbbs.ActiveOnline()
Dvbbs.Head_var 1,Application(Dvbbs.CacheName&"_boardlist").documentElement.selectSingleNode("board[@boardid='"&Dvbbs.BoardID&"']/@depth").text,"",""
GetForumTextAd(1)
BoardList()
Page=Request("Page")
If ( Not isNumeric(Page) )or Page="" Then Page=1
Page=Clng(Page)
If Page <1 Then Page=1
If Dvbbs.Board_Setting(43)="0" Then
topicList()
End If
End If
Dvbbs.Footer
End Sub
首先,这个页面中先调用
Dvbbs.LoadTemplates("index")
然后判断Dvbbs.BoardID是否为零,分别进行不同的操作
我们先研究Dvbbs.BoardID=0时的情况
Dvbbs.Stats=Replace(template.Strings(0),"动网先锋论坛",Dvbbs.Forum_Info(0))
Response.Write Dvbbs.mainhtml(18)
Dvbbs.Nav()
Dvbbs.ActiveOnline()
GetForumTextAd(0)
BoardList()
最后,再调用Dvbbs.Foolter来显示页脚
先来看看Dvbbs.mainhtml(18)是一个什么内容,打开Dv_ClsMain.asp,在LoadTemplates函数里面可以看到:
mainhtml = Split(Main_Style(0),"|||")
可见mainhtml是一个数组,而Main_Style怎么来的呢?
Main_Style = Split(Main_Style,"@@@")
继续往上找:
Main_Style = Replace(Application(CacheName &"_style").documentElement.selectSingleNode("style[@id='"& SkinID &"']/@main_style").text,"{$PicUrl}",Forum_PicUrl) '风格图片路径替换
哦,原来他们都是从Application变量中来的,而且我们可以看到Application中储存的一定是xml格式的数据。
那么,Application中究竟缓存了哪些东西呢?我今天决心一探究竟。