ASP.NET生成静态页面的方法
ASP.NET生成静态页面的方法
ASP.NET生成静态页面的方法
使用静态页面有如下好处:
1、 安全:使用静态页面,用户访问的使没有任何操作功能的html页面,可以说从安全性方面大大提高了程序及服务器的安全。
2、 快速:用户访问的是提前生成好的静态页面,使用户对页面的请求瓶颈只受IO的限制而不会有其他方面的影响。
3、 降低服务器,数据库负载:因为用户访问的是静态页,对承载静态页的服务器配置要求降低了许多,同时,不会因为过大的访问量,造成数据库服务器负载过重等问题。
下面就介绍一个用ASP.NET生成静态页面的方法。
基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用真实的数据替换掉,并生成一个HTML文件。
1、实现代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;
namespace htmlWeb
{
public class CreateHtm
{
private string fileName;
public String FileName
{
get { return fileName; }
}
/// <summary>
/// 读取配置文件
/// </summary>
/// <param name="dirName">配置文件的路径名</param>
/// <param name="tag">配置文件中的标签名</param>
/// <returns>_replaceStr的长度</returns>
private int GetConfig(String dirName, String tag)
{
XmlDataDocument config = new XmlDataDocument();
try
{
config.Load(dirName);
}
catch (Exception ex)
{
throw ex;
}
XmlNodeList list = config.GetElementsByTagName(tag);
return list.Count;
}
/// <summary>
///生成HTML文件
/// </summary>
/// <param name="configFileName">配置文件的路径名</param>
/// <param name="configTag">配置文件中的标签名</param>
/// <param name="dir">生成文件所在的文件夹的路径</param>
/// <param name="templateFile">模板文件的的路径</param>
/// <param name="param">要替换的字符串数组</param>
/// <returns>生成的文件名</returns>
public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)
{
fileName = null;
int count = GetConfig(configFileName, configTag);
String[] _replaceStr = new String[count];
try
{
FileStream tFile = File.Open(templateFile, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding("gb2312"));
StringBuilder sb = new StringBuilder(reader.ReadToEnd());
reader.Close();
for (int i = 0; i < count; i++)
{
sb.Replace("$repalce[" + i + "]$", param[i]);
}
fileName = DateTime.Now.ToFileTime().ToString() + ".htm";
FileStream rFile = File.Create(dir+"/" + fileName);
StreamWriter writer = new StreamWriter(rFile, Encoding.GetEncoding("gb2312"));
writer.Write(sb.ToString());
writer.Flush();
writer.Close();
}
catch (Exception ex)
{
throw ex;
}
}
public void DeleteHtml(String dirName)
{
File.Delete(dirName);
}
}
}
2、生成静态页的方法说明
(1)、private int GetConfig(String dirName, String tag)
此方法用于读取配置文件(见后),主要是获得要替换的字符串的个数,在本类同体现为一个字符串数组
(2)、public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)
此方法用于生成静态页面
3、生成静态页的方法的使用示例
(1)、首先,建立一个配置文件 config.xml.此文件告诉使用者每个标记的含义
<?xml version="1.0" encoding="utf-8" ?>
<htmlWeb version="1">
<config>
<article key="0" value="title"/>
<article key="1" value="author"/>
<article key="2" value="context"/>
<aritcle key="3" value="date"/>
</config>
</htmlWeb>
这样配置后,类会把标记数组0,1,2,3的位置分别替换为题目,作者,内容,发布日期。
(2)、模板文件
<head>
<title>模板文件</title>
</head>
<body>
<h1>这是一个简单的HTML页,朋友们可以根据自己的需要重新设计</h1>
<li>标题:$replace[0]$</li>
<li>作者:$replace[1]$</li>
<li>内容:$repalce[2]$</li>
<li>时间:$repalce[3]$</li>
</body>
(3)、使用方法:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace UseT
{
public class Test{
public void main(){
string[] param = new string[4];
param[0] = "测试模板";
param[1] = "农佳捷";
param[2] = "这是一个测试文章";
param[3] = "2007-10-30";
htmlWeb.CreateHtm cs = new htmlWeb.CreateHtm();
cs.MakeHtml("配置文件的路径
“, ”article“, ”生成文件的路径“, "模板文件的路径", param)
}
}
}
- ASP.NET windows服务调试
- 如何注册asp.net 4.0 到iis
- Asp.Net实现网站的快捷方式
- ASP.NET Web API中参数的传递
- ASP.NET中Web API的简单实例
- ASP.NET中application对象的用法
- ASP.NET List 集合操作
- ASP.NET SignalR是什么
- ASP.NET URLRewriter伪静态
- ASP.NET根据IP获取省市地址
- ASP.NET实现FTP上传文件
- ASP.NET获取网页中的图片
- asp.net将Excel文档转换成pdf
- ASP.NET网站的404错误页面的设置
- Asp.net Mvc模型绑定
- asp.net如何实现word文档在线预览
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
- 朋友圈屏蔽你的人,可以直接看淡了(朋友圈屏蔽你的人)
- 金球奖只青睐那些会戴珠宝的女人(金球奖只青睐那些会戴珠宝的女人)
热门推荐
- mysql单个表可以储存多少内容(浅谈mysql一张表到底能存多少数据)
- ftp服务器包括哪些(FTP服务器和Web服务器知多少)
- laravel配置文件动态化(在Laravel 的 Blade 模版中实现定义变量)
- Html5新增的标签
- 利用python合并pdf(Python合并同一个文件夹下所有PDF文件的方法)
- 云主机属于什么层次的云服务(什么是云?什么是云服务?什么是云主机?)
- 阿里云ssl证书安装教程(阿里云申请的 CA Wosin 证书,在Windows iis下导入证书的步骤分享)
- vue3 动态生成组件(如何在vue3.0+中使用tinymce及实现多图上传文件上传公式编辑功能)
- vue-cli请求数据的方式(vue-cli配置使用Vuex的全过程记录)
- pythonredis列表(Python redis操作实例分析连接、管道、发布和订阅等)