使用设计好的网页
前面的例子,我们都是用Foxtable动态合成网页。
动态合成的好处是:网页是“活”的,同样的页面,根据不同的用户、数据和业务逻辑,显示内容和结构可以完全不同。
我们也可以用第三方网页设计工具事先设计好网页,由Foxtable负责将网页发送给用户浏览器,代码很简单。
例如你将设计好的网页,放在"d:\web"目录及其子目录下,包括图片、js文件、css文件等等。
然后将HttpRequest事件代码设置为:
Dim
fl As
String =
"d:\web\" &
e.path
If
filesys.FileExists(fl)
Dim idx
As Integer
= fl.LastIndexOf(".")
Dim ext
As String
= fl.SubString(idx)
Select Case
ext
Case
".jpg",".gif",".png",".bmp",".wmf",".js",".css"
,".html",".htm"
e.WriteFile(fl)
End
Select
End
If
不到10行代码,这可能是史上最简单的架设http服务的方法。
不,这不是最简单的,很快你会看到真正简单的http服务架设方法,只需三行代码。
静态与动态
如果网页需要和动态的数据以及业务逻辑相结合,就用代码动态生成;如果网页基本不变化,就事先设计好网页,也就是静态网页,以提高效率。
同一个系统,可以同时有静态网页和动态网页,除非你明确告诉客户,否则客户并不会感受到这些页面什么不同。
例如:
Select
Case e.Path
Case ""
e.WriteString("这是根目录下的默认页面,是动态生成的")
Case "order.htm"
e.WriteString("这是根目录下的Order.htm,这个文件并不存在,是自动生成的")
Case "sale"
e.WriteString("这是根目录的sale子目录下的默认页面,是动态生成的")
Case "sale\add.htm"
e.WriteString("这是根目录的sale子目录下的add.htm,这个文件并不存在,是自动生成的")
Case Else
Dim
fl As
String = "d:\web\"
& e.Path
If
filesys.FileExists(fl)
Dim idx
As Integer
= fl.LastIndexOf(".")
Dim ext
As String
= fl.SubString(idx)
Select
Case ext
Case
".jpg",".gif",".png",".bmp",".wmf",".js",".css"
,".html",".htm"
e.WriteFile(fl)
End
Select
Else
e.WriteString("好奇怪,你访问的页面不存在!")
End
If
End
Select
有个小问题需要注意一下,e.path的路径分割符是\",不是"/"。
实际上,很难严格区分动态网页和动态网页,因为就是动态生成的网页,也需要使用不少静态的文件,例如图片、js、css等等。