Esta é a primeira vez que escrevo um artigo na CSDN. Meu talento literário e conhecimento teórico são limitados. Na verdade, já existem muitos artigos sobre geração de HTML em ASP na Internet. Um método é o método de geração de ASP + XML, embora uma vantagem seja que você pode fazer referência direta ao código-fonte original da página a ser gerada sem escrever um modelo. um programa, mas testei esse método naquela época e descobri que sua estabilidade era ruim e os requisitos de velocidade de rede eram altos (é claro que não estava no servidor). Especialmente no espaço virtual, erros são frequentemente relatados. Isso pode ser devido ao meu processamento insuficiente de código neste método. Para resumir a história, este artigo usa outro método comumente usado, ASP+FSO. A estrutura também é usada aqui para reduzir o tempo de geração ao processar um grande número de paginação. Este método é para alguns arquivos ASP com grandes volumes de páginas.
Aqui cito um exemplo simples: (e-commerce de viagens) páginas estáticas de aplicativos de hotéis (htm) nas principais cidades do país são exibidas na pagina
1. Ambiente do sistema de aplicativos: win2000+ASP+MSSQL/ACCESS (o banco de dados é basicamente irrelevante) +iis5.0
2.1 listas de cidades (CityHtml): incluindo três campos que definem nomes HTML estáticos (ID da cidade (número automático), nome da cidade (CityName como Pequim), nome de prefixo HTML gerado (HtmlStartName como Pequim))
3.1 listas de hotéis nacionais (Hotel): Aqui crio apenas três campos (ID do hotel (número automático), nome da cidade (City), nome do hotel (HotelName)) para facilitar a referência à instância.
4.1 Páginas ASP (ToHtm.asp) (usadas para gerar htm)
5.1 páginas de quadro de loop (IframeToHtm.asp), estrutura de aplicativo para gerar htm em lote
A seguir está o código-fonte de duas páginas de
quadro de loop para geração de páginas em lote: IFrameToHtm. .asp
< !--#include file="conn.asp"-->'Conectar ao banco de dados
<%
dimrs,sql,j
definir rs=Server.CreateObject("adodb.recordset")
sql="select * from CityHtml"'Abre a lista de cidades do país
rs.open sql,conn,1,1
faça até rs.eof' percorrer as principais cidades%>
<!--A seguinte estrutura de aplicativo abre a página gerada em ToHtml-->
<IFRame name="LoadRcHtm<%=j%>" frameborder=0 width=100% height=30 scrolling=no src="ToHtml.asp?City=<%=cstr(rs("city"))%>&HtmlStartName =<%=rs("HtmlStart")%>"></IFrame>
<%rs.movenext
loop%>
Gerar página do programa: ToHtm.asp Provavelmente escrevo um comentário no código fonte **
<!--#include file="conn.asp"-->'arquivo de conexão de dados
<%
On Error Resume Next'Processamento de tolerância a falhas
A definição de Dim City faz com que a cidade gere a página
City=Request.Querystring("City")' Obtém o valor do hotel urbano gerado passado da estrutura, que será introduzido posteriormente
HtmlStartName=Request.Querystring("HtmlStartName")'Obtém o prefixo do nome do arquivo html gerado
Dim sql' string de pesquisa, aqui abrirei a tabela diretamente sem procurar variáveis, basta escrever você mesmo as condições de pesquisa.
sql="selecione * do Hotel onde [Cidade] = '" & Cidade & "' "
Objeto de operação de dados Dim oRs
Dim PageCounts'Para implementar a geração de paginação, você deve saber quantas páginas existem
Definir oRs = Server.CreateObject("ADODB.Recordset")
oRs.Open Sql,oConn,1,1'Encontre a tabela que abre o hotel igual à variável Cidade
oRs.pagesize=10'Dez registros equivalem a uma página
PageCounts=oRs.pagecount' para obter quantas páginas gerar, use-o em um loop para gerar
Dim fs' define o objeto de arquivo fso
Dim folders é o nome da pasta onde as páginas estáticas são armazenadas
Dim Filestart' define o prefixo para gerar arquivos htm
Definir fs=Server.CreateObject("Scripting.FileSystemObject")
Escureça eu
for i=1 to PageCounts' começa a gerar páginas em loop, ou seja, a paginação é gerada.
página = eu
oRs.absolutepage=i'número da página
rowcount=oRs.pagesize'Número de registros na página atual
pastas=server.mappath("CidadeHtml")
if (fs.FolderExists(folders)) then' determina se a pasta existe
outro
fs.CreateFolder(folders)' cria a pasta CityHtml se ela não existir
terminar se
se eu=1 então
Filestart=HtmlStartName'Se for a primeira página, defina o nome do arquivo e passe o nome do valor. Por exemplo, beijing é beijing.htm.
outro
Filestart=HtmlStartName&i'Se a segunda página for beijing+1, por exemplo, se houver duas páginas, i é igual a 2, então é beijing2.htm e assim por diante...(o sufixo .htm é adicionado no final)
terminar se
Dim files' define a variável de nome do arquivo de texto gerado
Dim filez'define a variável do nome do caminho do arquivo
files=Filestart&".txt"'nome deste arquivo
filez=folders&""&"caminho do arquivo de texto dos arquivos
'Excluir arquivos
Dim checkfile'verifica se o arquivo de texto já existe, em caso afirmativo, exclua-o
checkfile=server.mappath("CityHtml"&Filestart&".htm")'Verifique se o arquivo htm já existe, em caso afirmativo, exclua-o
if (fs.FileExists(checkfile)) then'Verifique se o arquivo htm já existe, em caso afirmativo, exclua-o
Dim df'define objeto de arquivo *excluir arquivo usando*
Defina df=fs.GetFile(checkfile)'defina o arquivo a ser excluído
df.delete' excluir arquivo
fim se'fim do julgamento
Dim ts' define objeto de arquivo de gravação
set ts = fs.createtextfile(filez,true) 'Ativa a gravação do conteúdo do arquivo**Eu simplesmente escrevo o nome do hotel e o número estático da exibição de paginação no texto**
ts.write("<Html><Head><Title>Generate"&City&"City Hotel</Title>"&vbcrlf)' Depois disso, o conteúdo do arquivo principal deve ser gerado e usar Response.write
ts.write("<META http-equiv=Content-Type content=text/html; charset=gb2312>"&vbcrlf)
ts.write("<meta name=keywords content="&city&"hotel>"&vbcrlf)
ts.write("<link href='/Style/style.css' rel='stylesheet' type='text/css'></head><body topmargin=0>"&vbcrlf)
ts.Write("<TABLE WIDTH=760 cellpacing=0 cellpadding=0 align=center>"&vbcrlf&_
"<TR><TD largura='100%'>"&vbcrlf)
'Iniciar saída de paginação
'Não vou entrar em detalhes sobre o princípio do programa de paginação digital aqui. Amigos que não entendem podem pesquisá-lo na Internet.
Escurecer página' página atual
Dim Page2'Variável de paginação digital
Variável de paginação digital de Dims
se página=1 então
ts.write ("[Home] [Página anterior]")
outro
ts.write (" <a href="&HtmlStartName&".htm"&" class=blue>[Home]</a> <a href="&HtmlStartName&Replace(page-1,1,"")&".htm"& " class=blue>Página anterior</a> ")
terminar se
page2=(página-(página mod 10))/10
se página2<1 então página2=0
para s=página2*10-1 a página2*10+10
se s>0 então
se s=cint(página) então
ts.write (" <font color='#000000'>["& s & "]</font>")
outro
se s=1 então
ts.write (" <a href="&HtmlStartName&replace(s,1,"")&".htm"&" class=blue>["& s &"]</a>")
outro
ts.write (" <a href="&HtmlStartName&s&".htm"&" class=blue>["& s &"]</a>")
terminar se
terminar se
se s=ors.pagecount então
saída para
terminar se
terminar se
próximo
se cint(página)=ors.pagecount então
ts.write ("[próxima página] [última página]")
outro
ts.write (" <a href="&HtmlStartName&page+1&".htm"&" class=blue>[próxima página]</a> <a href="&HtmlStartName&ors.pagecount&".htm"&" class=blue> [ Última página]</a>")
terminar se
ts.write("</TD></TR>")
'Fim da saída de paginação
do while not ors.eof e rowcount>0 'Saída do nome do hotel
ts.write("<TR><TD width='100%'>"&oRs.Fields("Nome_chinês")&"</TD></TR>"&vbcrlf)
ouRs.movenext
rowcount=rowcount-1'Quando o número de registros na página é -1 loop
ts.write("</Table></body></html>"&vbcrlf)
ts.fechar
set ts=nothing 'Libera objeto
Dim EditFile' define a reescrita de variáveis de arquivo
Set EditFile = fs.GetFile(filez)'Defina o objeto do arquivo reescrito
EditFile.name= left(EditFile.name,len(EditFile.name)-4)&".htm" 'Reescreva o arquivo de texto em htm
next' termina a geração do loop (geração de paginação)
set EditFile=nothing 'Liberar objeto
set fs=nothing'libere o objeto
if err.number<>0 then 'Tratar erros gerados
Response.write(City&"Ocorreu um erro desconhecido ao atualizar <A href=ToHtml.asp?City="&City&"&HtmlName="&HtmlStartName&">Re-update</A>")
outro
Response.Write(Cidade&"Atualização do hotel concluída"&Agora())
terminar se
%>