首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络安全-> 病毒防治
ASP生成静态页面的方法-ASP教程,ASP应用
作者:网友供稿 点击:9
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
asp2html with templet

我希望大家看到该标题就能让想象到它的功能:

1,with templet意思是,生成的页面架构将采用某个已设定的模板,在此之前我的一篇教程中介绍过,希望各位在看本教程之前对asp采用模板应熟悉下。(当然,不看也没有问题,本教程同样会提及精华部分的:)具体参考:http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=474

2,asp2html。不要我再说asp转变成html的好处了吧,呵呵,其中最值得知道的就是:静态html页和动态页对服务器的要求承受能力小得多,同样,静态html搜索几率远比动态页面的多得多。

那么,我现在需要处理的技术问题就是:
1,如何实现模板技术?(先参看下上篇文章吧)
2,如何实现2html技术?
3,如何让模板技术与2html技术结合?

一、先进行技术原理分析

1,模板技术参看 www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=474

2,2html技术又该如何实现呢?如何使得asp页面转变为html?一般都会想到fso组件,因为该组件能新建任何文件格式。

那么其整个运行过程是怎么样的呢?
a,提供信息输入页面进行信息收集;
b,接受信息值先保存数据库,再fso生成文件;
c,技术性完成任务,显示刚被创建的html文件的路径地址。

该技术的实现过程中有如下几个难点:

i,fso生成的文件是直接放在一个大文件夹下,还是单独放在某个每日更新的子文件夹中?可能表述不准确,这样理解吧:相信通过fso生成的文件随着时间的推移,文件会越来越多,管理也会越来越乱……通常你可能看到一些地址诸如 www.xxx.com/a/2004-5-20/200405201111.html 可以分析得出应该是建立了当前日期的文件夹。这样,一天就是一个文件夹的页面内容,查看管理也就显得比较合理。

ii,我在试图通过以上方法建立文件夹的时候,又发现了第二个问题。第一次通过fso建立以当前日期命名的文件夹,没有问题。当我有新的文件需要生成时,因为是同一个程序,所以,其又将会执行建立同样的文件夹。此时,fso组件会发现该路径已存在……卡壳-_-! 继续处理,在首行添加代码:
引用:

on error resume next



嘿嘿,达到自欺欺人、掩耳盗铃的效果。

当然规矩的用法是判断文件夹的有无
引用:

<%
set fso = server.createobject("scripting.filesystemobject")
if (fso.folderexists(server.mappath(folder))) then
判断如果存在就不做处理
else
判断如果不存在则建立新文件夹
fso.createfolder(server.mappath(folder))
end if
%>



iii,文件夹是建立了,文件该如何建立呢?主要也就是文件名的生成。当然这个就需要自己来写个函数,功能就是如何生成文件名:)
引用:

<%
function makefilename(fname)
fname = fname 前fname为变量,后fname为函数参数引用
fname = replace(fname,"-","")
fname = replace(fname," ","")
fname = replace(fname,":","")
fname = replace(fname,"pm","")
fname = replace(fname,"am","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
makefilename = fname & ".html"
end function
%>

引用函数则:
<%fname = makefilename(now())%>


其实嘛,就是以年月日时分秒命名的文件。

iv,最后,生成的文件该如何查看到?当然需要把生成文件的路径保存的数据库中,并且添加到相对应的记录集中了。当然,这在下面的数据库设计时会提及到。

3,模板技术和2html技术的结合:将模板中特殊代码的值替换为从表单接受过来的值,完成模板功能;将最终替换过的所有模板代码生成html文件。需要注意的是:替换应能将输入数据的格式或者支持ubb的代码彻底改变。


二,再进行数据库设计

目前数据库的设计需要两个表:一个是存放模板数据的;一个是存放信息内容的。

1,建立新数据库asp2html.mdb

2,设计新数据库表c_moban
字段m_id(自动编号,主关键字);字段m_html(备注类型)。
并将下列完整的代码拷贝至m_html字段
引用:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=hz">
<title>cnbruce.com | asp2html test</title>
</head>
<body leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="0" cellpadding="5" cellspacing="2">
<tr align="right" bgcolor="#cccccc">
<td height="20" colspan="2">$cntop{logcontent}lt;/td>
</tr>
<tr valign="top">
<td width="25%" bgcolor="#e5e5e5">$cnleft{logcontent}lt;/td>
<td width="74%" bgcolor="#f3f3f3">$cnright{logcontent}lt;/td>
</tr>
</table>
</body>
</html>


3,设计新数据库表c_news

字段c_id:自动编号,主关键字
字段c_title:文本类型,保存文章标题
字段c_content:备注类型,保存文章内容
字段c_filepath:文本类型,保持生成文件的路径地址
字段c_time:日期/时间类型,默认值:now()


三,页面需求设计

1,首先建立一个存放html页的文件夹

在文件同一目录下,建立文件夹newsfile,夹子内部主要存放生成的html页面,当然内部还会采用程序方式建立以日期命名的子文件夹,以方便浏览以及管理。

2,功能函数页面lib.asp
引用:

<%
生成文件名的函数
function makefilename(fname)
fname = fname
fname = replace(fname,"-","")
fname = replace(fname," ","")
fname = replace(fname,":","")
fname = replace(fname,"pm","")
fname = replace(fname,"am","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
makefilename=fname & ".shtml"
end function

保持数据格式不变的函数
function htmlencode(fstring)
fstring = replace(fstring, ">", "&gt;")
fstring = replace(fstring, "<", "&lt;")
fstring = replace(fstring, chr(32), "&nbsp;")
fstring = replace(fstring, chr(13), "")
fstring = replace(fstring, chr(10) & chr(10), "<br>")
fstring = replace(fstring, chr(10), "<br>")
htmlencode = fstring
end function
%>


3,数据库连接页面conn.asp
完成数据库的字符串连接方法
<%
set conn = server.createobject("adodb.connection")
connstr = "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("asp2html.mdb")
conn.open connstr
%>
4,信息输入页面add.html
其实很简单:)就是表单嘛。注意action是跳转到addit.asp
引用:

<form action="addit.asp" method="post">
title:<input type="text" name="c_title"><br>
content:<br>
<textarea name="c_content" rows="8" cols="30"></textarea><br>
<input type="submit" value="add">
<input type="reset" value="reset">
</form>



5,处理数据功能显示页面addit.asp
首先是处理接受过来的数据,并将值写入数据库;接着将模板代码进行引用,并将其中特殊代码转换为接受值,最终通过fso生成html页面。其中需要注意的还有,生成文件的路径地址保存至数据库表。
引用:

<%容错处理
on error resume next
%>

<!--#include file="conn.asp" -->
<!--#include file="lib.asp" -->

<%接受传递值
c_title=request.form("c_title")
c_content=request.form("c_content")
%>

<%生成html文件名,建立文件夹,指定文件路径
fname = makefilename(now()) makefilename为自定义函数
folder = "newsfile/"&date()&"/"
filepath = folder&fname
%>

<%将接受值及路径保持至数据库表
sql = "select * from c_news"
set rs = server.createobject ("adodb.recordset")
rs.open sql,conn,3,2
rs.addnew
rs("c_title")=c_title
rs("c_content")=c_content
rs("c_filepath")=filepath
rs.update
rs.close
set rs = nothing
%>

<%打开模板代码,并将其中特殊代码转变为接受值
sql1="select m_id,m_html from c_moban where m_id=1"
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,1,1
mb_code=rs1("m_html")
rs1.close
set rs1=nothing
conn.close
set conn=nothing
c_title=htmlencode(c_title)
c_content=htmlencode(c_content)
mb_code=replace(mb_code,"$cntop{logcontent}quot;,now())
mb_code=replace(mb_code,"$cnleft{logcontent}quot;,c_title)
mb_code=replace(mb_code,"$cnright{logcontent}quot;,c_content)
%>

<%生成html页面
set fso = server.createobject("scripting.filesystemobject")
fso.createfolder(server.mappath(folder))
set fout = fso.createtextfile(server.mappath(filepath))
fout.writeline mb_code
fout.close
%>

文章添加成功,<a href="showit.asp">浏览</a>


6,显示数据库表记录,并做指向html页的链接:showit.asp
引用:

<!--#include file="conn.asp" -->
<!--#include file="lib.asp" -->
<%
set rs = server.createobject ("adodb.recordset")
sql = "select * from c_news order by c_id desc"
rs.open sql,conn,1,1
%>

<%
if rs.eof and rs.bof then
response.write ("暂时还没有文章,<a href=add.html>添加</a>")
else
do until rs.eof
%>
<table width="758" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td width="159" align="right" bordercolor="#cccccc" bgcolor="#cccccc"><%=rs("c_time")%></td>
<td width="591" bordercolor="#f3f3f3" bgcolor="#f3f3f3"><a href=<%=rs("c_filepath")%> target="a_blank"><%=rs("c_title")%></a></td>
</tr>
<tr>
<td valign="top" align="right" bordercolor="#ececec" bgcolor="#ececec">[<a href=del.asp?c_id=<%=rs("c_id")%>>dell</a>][<a href=change.asp?c_id=<%=rs("c_id")%>>edit</a>][<a href="add.html">add</a>]</td>
<td valign="top" bordercolor="#ffffff" bgcolor="#ffffff"><%=htmlencode(rs("c_content"))%></td>
</tr>
</table><br>
<%
rs.movenext
loop
end if
%>

<%
rs.close
set rs = nothing
conn.close
set conn=nothing
%>



7,修改数据内容页change.asp

修改数据内容,同时也需要修改更新对应的html页面。修改其实就是重新生成文件,且文件名和之前一样,类似文件的覆盖。
引用:

<!--#include file="conn.asp" -->
<!--#include file="lib.asp" -->

<%id=request.querystring("c_id")%>

<%
if request.form("submit")="change" then
c_title=request.form("c_title")
c_content=request.form("c_content")
c_id=request.form("c_id")
c_filepath=request.form("c_filepath")

set rs = server.createobject ("adodb.recordset")
sql = "select * from c_news where c_id="&c_id
rs.open sql,conn,3,2
rs("c_title")=c_title
rs("c_content")=c_content
rs("c_time")=now()
rs.update
rs.close
set rs = nothing
%>

<%打开模板代码,并将其中特殊代码转变为接受值
sql1="select m_id,m_html from c_moban where m_id=1"
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,1,1
mb_code=rs1("m_html")
rs1.close
set rs1=nothing
conn.close
set conn=nothing
c_title=htmlencode(c_title)
c_content=htmlencode(c_content)
mb_code=replace(mb_code,"$cntop{logcontent}quot;,now())
mb_code=replace(mb_code,"$cnleft{logcontent}quot;,c_title)
mb_code=replace(mb_code,"$cnright{logcontent}quot;,c_content)
%>

<%生成html页面
set fso = server.createobject("scripting.filesystemobject")
set fout = fso.createtextfile(server.mappath(c_filepath))
fout.writeline mb_code
fout.close
%>
<%response.redirect("showit.asp")%>
<%end if%>

<%
if id<>"" then
set rs = server.createobject ("adodb.recordset")
sql="select * from c_news where c_id="&id
rs.open sql,conn,1,1
c_id=rs("c_id")
c_filepath=rs("c_filepath")
c_title=rs("c_title")
c_content=rs("c_content")
end if
%>

<form action="change.asp" method="post">
title:<input type="text" name="c_title" value=<%=c_title%>><br>
content:<br>
<textarea name="c_content" rows="8" cols="30"><%=c_content%></textarea><br>
<input type="submit" value="change" name="submit">
<input type="reset" value="reset">
<input name="c_id" type="hidden" value="<%=id%>">
<input name="c_filepath" type="hidden" value="<%=c_filepath%>">
</form>



8,删除记录页del.asp

同样!删除,除了删除数据库表中的记录,与其对应的html页面也需删除。代码如下:
引用:

<!--#include file="conn.asp" -->

<%
c_id = request.querystring("c_id")
sql = "select * from c_news where c_id="&c_id
set rs = server.createobject ("adodb.recordset")
rs.open sql,conn,2,3

filepath=rs("c_filepath")
set fso = createobject("scripting.filesystemobject")
fso.deletefile(server.mappath(filepath))
set fso = nothing

rs.delete
rs.close
set rs = nothing
conn.close
set conn=nothing
%>

<%response.redirect("showit.asp")%>



四,其它功能

模板管理页面:

不会每次都是打开数据库表进行增加或者修改模板代码吧,所以,管理代码的页面程序不能少了,自己捣鼓下应该很简单的。当然,之前管理员的登录认证程序就不在书中交代了:)还有,如果设计了多个模板,那么在发表信息的时候应添加模板选择单选框,同样在执行转换html时,sql选择的不同m_id了。


不管怎么说,先把这些技术自己调试感受下。多多操作,相信“读书千遍,其意自见”。

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·常用ASCII 码对照表-ASP教程,ASP基础
·使用jsp实现word、excel格式报表打印-JSP教程,Jsp/Servlet
·vb.net中的数据库连接-.NET教程,数据库应用
·细说Java之util类-JSP教程,Java技巧及代码
·揪出系统中秘密隐藏的木马
·利用 JAXB 通过 XML 模式生成 XML 文档-.NET教程,XML应用
·asp.net2.0 站点登录,导航与权限管理-.NET教程,.NET Framework
·一个将阿拉伯数字转换成中文大写的最简单算法-.NET教程,数据库应用
·65w双路输出1/4砖型模块电源的介绍
·拥有xp风格的界面-.NET教程,Windows开发
最新文章
·制作一个百毒不侵的系统_病毒防治教程
·教你认识网页中五种隐形的危险病毒_病毒防治教程
·用excel剿灭dll木马_病毒防治教程
·15实用免费安全软件大搜罗_病毒防治教程
·如何让u盘做到100%预防病毒_病毒防治教程
·利用windows系统自带命令手工搞定病毒_病毒防治教程
·windows vista系统下的rootkit攻防_病毒防治教程
·六招关闭windows xp自动播放防止病毒_病毒防治教程
·巧设江民2007 彻底防范msn相册病毒_病毒防治教程
·加壳与脱壳 杀毒软件新技术的意义_病毒防治教程
相关主题
  • ASP生成XBM图可用作验证码-ASP教程,ASP应用
  • ASP生成静态网页的方法-ASP教程,ASP应用
  • ASP生成HTML-ASP教程,ASP技巧
  • ASP生成静态网页,学习CASE的用法,以及“权限”的一种控制方法-ASP教程,组件开发
  • ASP生成静态htm页面基本代码!-ASP教程,ASP基础
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭