仓酷云

标题: ASP网站制作之对ASP静态包括文件办法的改善 [打印本页]

作者: 透明    时间: 2015-2-3 23:31
标题: ASP网站制作之对ASP静态包括文件办法的改善
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了静态     ASP 自己不撑持静态包括文件,如今的静态包括是经由过程 FSO 把被包括的文件兼并到主文件里再运转。以下也有把形如 <!--#include file="filename.asp" --> 的通俗包括文件体例称作“传统援用”,用函数完成的静态包括文件称作“静态援用”。罕见的法式以下:
Function include(filename)
Dim re,content,fso,f,aspStart,aspEnd
set fso=CreateObject("Scripting.FileSystemObject")
set f=fso.OpenTextFile(server.mappath(filename))
content=f.ReadAll
f.close
set f=nothing
set fso=nothing
set re=new RegExp
re.pattern="^\s*="
aspEnd=1
aspStart=inStr(aspEnd,content,"<%")+2
do while aspStart>aspEnd+1
Response.write Mid(content,aspEnd,aspStart-aspEnd-2)
aspEnd=inStr(aspStart,content,"%\>")+2
Execute(re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write "))
aspStart=inStr(aspEnd,content,"<%")+2
loop
Response.write Mid(content,aspEnd)
set re=nothing
End Function  
  利用典范:include("youinc.asp")
  但这处函数在处置补包括的文件中还有包括文件时就不灵了。我在以上函数的基本上改善出来以下函数,在被包括文件中还有通俗的包括文件 <!--#include file="filename.asp" --> 也可正常运转。
Function includeconvert(oRegExp, strFilename, strBlock)
Dim incStart, incEnd, match, oMatches, str, code
'用提取ASP代码的不异体例提掏出include 局部的文件名,其他局部原样输入
code = ""
incEnd = 1
incStart = InStr(incEnd,strBlock,"<!--#include ") + 13 '要找个方针字符串<!--#include 正好是13个字符,所以要+13
Do While incStart>incEnd+12 '两个援用间距最小就是一连的--><--#,incStart是从<!--#include起数13个字符,所以要比前一个incEnd要最少多 13-1 失掉的>incEnd+12的前提
str = Mid(strBlock,incEnd,incStart-incEnd-13)
str = WordStr(str, """", """""") '把单个双引号换成两个双引号
str = WordStr(str, VbCr, "")
str = WordStr(str, VbLf, "")
str = WordStr(str, VbCrLf, "")
code = code & VbCrLf & "Response.Write """ & str & """"
incEnd=InStr(incStart,strBlock,"-->")+3
oRegExp.pattern="(\w+)=""([^""]+)""" '婚配 file="filename.ext" 或 virtual="virtualname.ext",捕获类型及文件名两个子串
Set oMatches = oRegExp.Execute(Mid(strBlock,incStart,incEnd-incStart-3))
Set match = oMatches(0) '肯定只要一组捕获时,要失掉这一组婚配的子串,可以如许做,省去用 For Each match In oMatches …… Next
code = code & include(Mid(strFilename, 1, InStrRev(strFilename, "/")) & match.SubMatches(1)) 'Mid(filename, 1, InStrRev(filename, "/")) 是在被援用的子文件名有途径时,把途径提掏出来,加在子文件中传统援用的文件名后面,以找到准确的翻开文件途径,由于静态援用时的文件途径是绝对主文件而言的。要第二个婚配子串用SubMatches(1)
incStart = InStr(incEnd,strBlock,"<!--#include ")+13
Loop
str = Mid(strBlock,incEnd)
str = WordStr(str, """", """""") '把单个双引号换成两个双引号
str = WordStr(str, VbCr, "")
str = WordStr(str, VbLf, "")
str = WordStr(str, VbCrLf, "")
code = code & VbCrLf & "Response.Write """ & str & """"
includeconvert = code
End Function
Function include(filename)
Dim re, content, fso, f, aspStart, aspEnd, code
Set fso=CreateObject("scripting.FileSystemObject")
Set f=fso.OpenTextFile(Server.MapPath(filename))
content=f.ReadAll
f.close
Set f=nothing
Set fso=nothing
code = ""
aspEnd=1
aspStart=InStr(aspEnd,content,"<%")+2
Set re=new RegExp
Do While aspStart>aspEnd+1
'传统援用<!--#inclde 一定是在ASP代码段之外的,所以先转。
code = code & includeconvert (re, filename, Mid(content,aspEnd,aspStart-aspEnd-2))
aspEnd=InStr(aspStart,content,"%\>")+2
re.pattern="^\s*=" '这段正则交换本来是把 <% = str % > 换回成尺度的 <%Response.Write str % >
code = code & VbCrLf & re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write ") 'ASP块后面再加回车换行,以免毗连块之间多个 Response.Write在统一行的毛病
aspStart=InStr(aspEnd,content,"<%")+2
Loop
code = code & includeconvert (re, filename, Mid(content,aspEnd))
Set re=nothing
include = code
End Function
  便利起见,以上函数终究前往的是整合了包括文件的全部 ASP 代码,利用时还要再用 Execute 履行之,即便用时需求:Execute(include("file.asp"))。
  以上函数对被包括文件与主文件统一途径时测试经由过程,未对被包括文件与主文件途径分歧的情形做进一步容错,工夫无限,接待有乐趣的伴侣提出定见和改善。
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。
作者: 深爱那片海    时间: 2015-2-4 00:53
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
作者: 灵魂腐蚀    时间: 2015-2-9 08:45
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
作者: 精灵巫婆    时间: 2015-2-9 21:55
那么,ASP.Net有哪些改进呢?
作者: 飘飘悠悠    时间: 2015-2-27 00:07
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
作者: 不帅    时间: 2015-3-8 18:38
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
作者: 小妖女    时间: 2015-3-9 20:37
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
作者: 再见西城    时间: 2015-3-10 08:50
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
作者: 小魔女    时间: 2015-3-17 06:08
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
作者: 仓酷云    时间: 2015-3-23 22:22
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
作者: 活着的死人    时间: 2015-4-6 13:04
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
作者: 爱飞    时间: 2015-4-15 15:51
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
作者: 分手快乐    时间: 2015-4-16 03:12
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
作者: 若天明    时间: 2015-4-22 18:26
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
作者: 若相依    时间: 2015-4-24 01:30
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
作者: 柔情似水    时间: 2015-5-4 04:48
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 愤怒的大鸟    时间: 2015-5-9 11:50
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
作者: 只想知道    时间: 2015-6-7 07:28
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
作者: 第二个灵魂    时间: 2015-6-27 10:14
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 莫相离    时间: 2015-6-27 17:09
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2