模板技术

news/2024/11/9 17:57:23


要生成静态页,必须采用模板技术,因为要写入TXT/Html文件,必须先将所有的最终Html代码,提前放入一个变量,然后才能写文件。

而要将所有的代码放在一个变量,必须用标签技术,即在模板中,用预定义标签来代表各个功能,读模板的过程中,根据各个标签来调用各个变量,随时将调用结果加到代码里,这样才能实现。

<%
filename = Server.MapPath("index.html")
HtmlContent = Readfile(filename)
'这是提供给前台程序的Html代码,可以从数据库中读取模板,或从Txt/Html文件读取到这些代码,这是例程,采用直接赋值给变量的方法。
HtmlContent = HtmlContent & "<Table border=1 width=""100%""><tr><td>{$ReadJobList(1,2)}</td><td>{$ReadCompanyList(1,2)}</td></tr></table>"

%>



<%

'clsMain.asp
 '================================================
 '函数名:CutMatchContent
 '作  用:截取相匹配的内容
 '参  数:Str   ----原字符串
 '        PatStr   ----符合条件字符
 '================================================
 Public Function CutMatchContent(ByVal str, ByVal start, ByVal last, ByVal Condition)
       
  Dim Match,s,re
  Dim FilterStr,MatchStr
  Dim strContent,ArrayFilter
  Dim i, n,bRepeat
  
  If Len(start) = 0 Or Len(last) = 0 Then Exit Function
  
  On Error Resume Next
  
  MatchStr = "(" & CorrectPattern(start) & ")(.+?)(" & CorrectPattern(last) & ")"

  Set re = New RegExp
  re.IgnoreCase = True
  re.Global = True
  re.Pattern = MatchStr
  Set s = re.Execute(str)
  n = 0
  For Each Match In s
   If n = 0 Then
    n = n + 1
    ReDim ArrayFilter(n)
    ArrayFilter(n) = Match
   Else
    bRepeat = False
    For i = 0 To UBound(ArrayFilter)
     If UCase(Match) = UCase(ArrayFilter(i)) Then
      bRepeat = True
      Exit For
     End If
    Next
    If bRepeat = False Then
     n = n + 1
     ReDim Preserve ArrayFilter(n)
     ArrayFilter(n) = Match
    End If
   End If
  Next
  
  Set s = Nothing
  Set re = Nothing
  
  If CBool(Condition) Then
   strContent = Join(ArrayFilter, "|||")
  Else
   strContent = Join(ArrayFilter, "|||")
   strContent = Replace(strContent, start, "")
   strContent = Replace(strContent, last, "")
  End If
  
  CutMatchContent = Replace(strContent, "|||", vbNullString, 1, 1)
 End Function
 
 Function CutFixContent(ByVal str, ByVal start, ByVal last, ByVal n)
  Dim strTemp
  On Error Resume Next
  If InStr(str, start) > 0 Then
   Select Case n
   Case 0  '左右都截取(都取前面)(去处关键字)
    strTemp = Right(str, Len(str) - InStr(str, start) - Len(start) + 1)
    strTemp = Left(strTemp, InStr(strTemp, last) - 1)
   Case Else  '左右都截取(都取前面)(保留关键字)
    strTemp = Right(str, Len(str) - InStr(str, start) + 1)
    strTemp = Left(strTemp, InStr(strTemp, last) + Len(last) - 1)
   End Select
  Else
   strTemp = ""
  End If
  CutFixContent = strTemp
 End Function
 Private Function CorrectPattern(ByVal str)
  str = Replace(str, "\", "\\")
  str = Replace(str, "~", "\~")
  str = Replace(str, "!", "\!")
  str = Replace(str, "@", "\@")
  str = Replace(str, "#", "\#")
  str = Replace(str, "%", "\%")
  str = Replace(str, "^", "\^")
  str = Replace(str, "&", "\&")
  str = Replace(str, "*", "\*")
  str = Replace(str, "(", "\(")
  str = Replace(str, ")", "\)")
  str = Replace(str, "-", "\-")
  str = Replace(str, "+", "\+")
  str = Replace(str, "[", "\[")
  str = Replace(str, "]", "\]")
  str = Replace(str, "<", "\<")
  str = Replace(str, ">", "\>")
  str = Replace(str, ".", "\.")
  str = Replace(str, "/", "\/")
  str = Replace(str, "?", "\?")
  str = Replace(str, "=", "\=")
  str = Replace(str, "|", "\|")
  str = Replace(str, "$", "\$")
  CorrectPattern = str
 End Function


 '=============================================================
 '过程名:CreatedTextFile
 '作  用:创建文本文件
 '参  数:filename  ----文件名
 '        body  ----主要内容
 '=============================================================
 Public Function CreatedTextFile(ByVal FileName, ByVal body)
  On Error Resume Next
  If InStr(FileName, ":") = 0 Then FileName = Server.MapPath(FileName)
  Dim fso,f
  Set fso = Server.CreateObject(FSO_ScriptName)
  Set f = fso.CreateTextFile(FileName)
  f.WriteLine body
  f.Close
  Set f = Nothing
  Set fso = Nothing
  If Err.Number <> 0 Then Err.Clear
 End Function
 '================================================
 '函数名:Readfile
 '作  用:读取文件内容
 '参  数:fromPath   ----来源文件路径
 '================================================
 Public Function Readfile(ByVal fromPath)
  'On Error Resume Next
  Dim strTemp,fso,f
  If InStr(fromPath, ":") = 0 Then fromPath = Server.MapPath(fromPath)
  Set fso = Server.CreateObject("Scripting.FileSystemObject")
  If fso.FileExists(fromPath) Then
   Set f = fso.OpenTextFile(fromPath, 1, True)
   strTemp = f.ReadAll
   f.Close
   Set f = Nothing
  End If
  Set fso = Nothing
  Readfile = strTemp
  If Err.Number <> 0 Then Err.Clear
 End Function
%>


<%

'Cls_Public.asp

 '================================================
 '函数名:LoadCompanyList
 '================================================
 Public Function LoadCompanyList(a,b) 

  '根据接收到的参数,从数据库中查询到记录,然后将所有结果连成一个字符串,放到strContent中传递
  strContent = "<a href=show.asp?id=6 target=_blank>百誉科技!</a>"
  LoadCompanyList = strContent

 End Function

 '================================================
 '函数名:ReadCompanyList
 '作  用:读取公司列表
 '参  数:str ----原字符串
 '================================================
 Public Function ReadCompanyList(ByVal str)
  Dim strTemp, i
  Dim sTempContent, nTempContent
  Dim arrTempContent, arrTempContents, ArrayList
  'On Error Resume Next
  strTemp = str
  If InStr(strTemp, "{$ReadCompanyList(") > 0 Then

   sTempContent = CutMatchContent(strTemp, "{$ReadCompanyList(", ")}", 1)
   nTempContent = CutMatchContent(strTemp, "{$ReadCompanyList(", ")}", 0)
   arrTempContents = Split(sTempContent, "|||")
   arrTempContent = Split(nTempContent, "|||")
   For i = 0 To UBound(arrTempContents)
    ArrayList = Split(arrTempContent(i), ",")
    strTemp = Replace(strTemp, arrTempContents(i), LoadCompanyList(1,2))
   Next
  End If
  ReadCompanyList = strTemp

 End Function

 

 

 

 

 

 '================================================
 '函数名:LoadJobList
 '================================================
 Public Function LoadJobList(a,b) 

  '根据接收到的参数,从数据库中查询到记录,然后将所有结果连成一个字符串,放到strContent中传递
  strContent = "<a href=show.asp?id=6 target=_blank>财务人员!</a>"
  LoadJobList = strContent

 End Function

 '================================================
 '函数名:ReadJobList
 '作  用:读取职位列表
 '参  数:str ----原字符串
 '================================================
 Public Function ReadJobList(ByVal str)
  Dim strTemp, i
  Dim sTempContent, nTempContent
  Dim arrTempContent, arrTempContents, ArrayList
  'On Error Resume Next
  strTemp = str
  If InStr(strTemp, "{$ReadJobList(") > 0 Then

   sTempContent = CutMatchContent(strTemp, "{$ReadJobList(", ")}", 1)
   nTempContent = CutMatchContent(strTemp, "{$ReadJobList(", ")}", 0)
   arrTempContents = Split(sTempContent, "|||")
   arrTempContent = Split(nTempContent, "|||")
   For i = 0 To UBound(arrTempContents)
    ArrayList = Split(arrTempContent(i), ",")
    strTemp = Replace(strTemp, arrTempContents(i), LoadJobList(1,2))
   Next
  End If
  ReadJobList = strTemp

 End Function

 Public Function ShowIndex(isHtml)  


  HtmlContent = ReadJobList(HtmlContent)    '职位列表
  HtmlContent = ReadCompanyList(HtmlContent)   '公司列表

  If isHtml=1 Then
   'ShowIndex = HtmlContent
   Response.Write HtmlContent
  Else
   Response.Write HtmlContent
  End If

 End Function

%>

<%
'Templete.asp
filename = Server.MapPath("index.html")
HtmlContent = Readfile(filename)
'这是提供给前台程序的Html代码,可以从数据库中读取模板,或从Txt/Html文件读取到这些代码,这是例程,采用直接赋值给变量的方法。
HtmlContent = HtmlContent & "<Table border=1 width=""100%""><tr><td>{$ReadJobList(1,2)}</td><td>{$ReadCompanyList(1,2)}</td></tr></table>"

%>

<!--#include file="inc/Cls_Public.asp"-->
<!--#include file="inc/clsMain.asp"-->
<!--#include file="inc/Templete.asp"-->

<%
Call ShowIndex(1)
%>



http://www.niftyadmin.cn/n/3566944.html

相关文章

[转贴]Symbian开发入门 - UIQ开发教程

文章作者:无双: 原发处:loveunix.net 欢迎转载&#xff0c;但是保留原作者与发表网站 保留版权声明 文章作者:无双: 原发处:loveunix.net 欢迎转载&#xff0c;但是保留原作者与发表网站 保留版权声明   symbian是智能手机中的操作系统   在目前手机操作系统的争夺中&#…

PhpExcel中文帮助手册|PhpExcel使用方法一

结的几个使用方法001include PHPExcel.php; 002include PHPExcel/Writer/Excel2007.php; 003//或者include PHPExcel/Writer/Excel5.php; 用于输出.xls的 004创建一个excel 005$objPHPExcel new PHPExcel(); 006保存excel—2007格式 007$objWriter new PHPExcel_Writer_Exc…

DETR源码笔记(一)

源码获取&#xff1a;https://gitee.com/fgy120/DETR 首先对DETR做个简单介绍 上图即为DETR的流程pipeline&#xff0c;相比以前的RCNN系列、YOLO系列等&#xff0c;最特别的在于加入了Transformer。 目录 main函数 (一) 参数设置 main函数&#xff08;二&#xff09;搭…

一个分离中文英文的函数

Function SplitString(TheString)Dim n,Chs,EngFor n 1 to Len(TheString)If Asc(Mid(TheString,n,1))<0 thenChsChs&Mid(TheString,n,1)ElseEngEng&Mid(TheString,n,1)End ifNextSplitString"中文字符&#xff1a;"&Chs&"<BR>英文字…

[转贴]Symbian内存管理的二十二条军规

Symbian内存管理的二十二条军规2005-01-12浏览次数&#xff1a;981、C类必须有析构函数&#xff0c;这是CBase的一个虚函数。 2、C类的构造函数和ConstructL()必须为protect或private类型的成员函数 3、在C class中必须有一个NewLC()函数&#xff0c;除非它是嵌套类。NewL()是可…

Linux 必须要掌握的重要目录:

必须要掌握的重要目录&#xff1a; /etc/sysconfig/network-scripts/ifcfg-eth0 第一块网卡的配置 /etc/resolv.conf 客户端dns&#xff0c;是linux上网dns&#xff0c;网卡/etc/sysconfig/network-scripts/ifcfg-eth0里的dns优先于客户端客户端dns/etc/resolv.conf /etc/hosts…

PhpExcel中文帮助手册|PhpExcel使用方法三

001 <p>PHPExcel基本操作&#xff1a;<br /> 002定义EXCEL实体<br /> 003即定义一个PHPEXCEL对象&#xff0c;并设置EXCEL对象内显示内容</p> 004<div> 005<pre class"prebrush"> 006// Excel开始 007// 准备EXCEL的包括文件 00…

ASP判断字符串长度(包含汉字问题)

<%Function getLength(txt)txttrim(txt)x len(txt)y 0for ii 1 to x if asc(mid(txt,ii,1))<0 or asc(mid(txt,ii,1))>255 then y y 2 else y y 1 end ifnextgetLength yEnd Function"************* 截取字符串 **************Function get…