文章 | 入侵攻击 | 安全防御 | 操作系统 | 网站建设 | 网络编程 | 路由交换 | 灾难恢复 | 新闻资讯 | 安全公告
下载 | 漏洞扫描 | 加密破解 | 入侵攻击 | 后门木马 | 溢出程序 | 综合工具 | 安全防护 | 原创发布 | 动画教程
论坛 | 黑客军火 | 配服务器 | 黑客情感 | 免费资源 | 美女贴图 | 灌水无罪 | 在线服务 | 会员照片 | 网站首页
 当前位置:主页 >> 技术文摘 >> 网络编程 >> NET编程 >> 文章内容  
 

 
利用ASP.Net 动态生成HTML文件

www.hx99.org 阅读: 时间:2007-07-09 整理:华西黑盟
------------------------------------------------------------------
 

利用ASP.Net动态生成HTML文件!
环境:Microsoft.NETFrameworkSDKv2.0.50727
OS:WindowsServer2003SP1中文版
ASP.Net生成静态HTML页
在.Net中涉及此类操作的是System.IO

实现动态创建HTML文件的功能需要应用StreamReader和StreamWriter类。

在ASP.net中,String对象是不可改变的,每次使用该类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为新对象分配新的空间。在需要对字符串执行重复修改的情况下,就会增加系统开销。如果要修改字符串而不创建新的对象,则可以使用Sysmte.text命名空间下的StringBuilder类,该类可以改变字符串,当在一个循环中将许多字符串连接到一起时,使用StringBuildr类可以提高性能。

实现方法:首先使用StreamReader对象读取指定HTML模板文件内容,并把读取到的内容保存到StringBuilder对象中,然后通过for循环语句依次替换关键字段,最后再通过StreamWriter对象根据替换后新内容创建一个HTML文件。

代码如下:

页面文件:

新闻模板文件(template.html):

 <html>
      <head>
             <title>$htmlkey[0]</title>
             <metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
      </head>
      <body>
             <table$htmlkey[1]height="100%"border="0"width="100%"cellpadding="10"cellspacing="0" bgcolor="#eeeeee"style="border:1pxsolid#000000">
                <tr>
                   <tdwidth="100%"valign="middle"align="left">
      <spanstyle="color:$htmlkey[2];font-size:$htmlkey[3]"><marquee>$htmlkey[4]</marquee></span>
     </td>
                </tr>
             </table>
      </body>
</html>

页面文件:Dhtml.aspx

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Dhtml.aspx.cs"Inherits="Dhtml"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
   <title>UntitledPage</title>
</head>
<body>
  <formid="Form1"method="post"runat="server">
   <asp:Buttonid="btnCreate"style="Z-INDEX:101;LEFT:576px;POSITION:absolute;TOP:48px"
    runat="server"Text="创建HTML文件"OnClick="btnCreate_Click"></asp:Button>
   <asp:TextBoxid="txtContent"style="Z-INDEX:102;LEFT:208px;POSITION:absolute;TOP:80px"
    runat="server"TextMode="MultiLine"Height="402px"Width="352px"></asp:TextBox>
   <asp:HyperLinkid="hyCreateFile"style="Z-INDEX:103;LEFT:584px;POSITION:absolute;TOP:96px"
    runat="server"Target="_blank">创建的HTML文件</asp:HyperLink>
   <asp:TextBoxid="txtTitle"style="Z-INDEX:104;LEFT:208px;POSITION:absolute;TOP:48px"runat="server"
    Width="352px"></asp:TextBox>
   <asp:Labelid="Label1"style="Z-INDEX:105;LEFT:128px;POSITION:absolute;TOP:48px"runat="server">页面标题</asp:Label>
   <asp:Labelid="Label2"style="Z-INDEX:106;LEFT:128px;POSITION:absolute;TOP:80px"runat="server">页面内容</asp:Label>
  </form>
</body>
</html>

实现代码:Dhtml.aspx.cs

usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Text;
usingSystem.IO;

publicpartialclassDhtml:System.Web.UI.Page
{
   protectedvoidPage_Load(objectsender,EventArgse)
   {

   }
   protectedvoidbtnCreate_Click(objectsender,EventArgse)
   {
       string[]newContent=newstring[5];//定义和html标记数目一致的数组
       StringBuilderstrhtml=newStringBuilder();
       try
       {
           //创建StreamReader对象
           using(StreamReadersr=newStreamReader(Server.MapPath("TextBox")+"\\template.html"))
           {
               stringoneline;
               //读取指定的HTML文件模板
               while((oneline=sr.ReadLine())!=null)
               {
                   strhtml.Append(oneline);
               }
               sr.Close();
           }
       }
       catch(Exceptionerr)
       {
           //输出异常信息
           Response.Write(err.ToString());
       }
       //为标记数组赋值
       newContent[0]=txtTitle.Text;//标题
       newContent[1]="BackColor='#cccfff'";//背景色
       newContent[2]="#ff0000";//字体颜色
       newContent[3]="100px";//字体大小
       newContent[4]=txtContent.Text;//主要内容

       //根据上面新的内容生成html文件
       try
       {
           //指定要生成的HTML文件
           stringfname=Server.MapPath("TextBox")+"\\"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";
           //替换html模版文件里的标记为新的内容
           for(inti=0;i<5;i++)
           {
               strhtml.Replace("$htmlkey["+i+"]",newContent[i]);
           }
           //创建文件信息对象
           FileInfofinfo=newFileInfo(fname);
           //以打开或者写入的形式创建文件流
           using(FileStreamfs=finfo.OpenWrite())
           {
               //根据上面创建的文件流创建写数据流
               StreamWritersw=newStreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));
               //把新的内容写到创建的HTML页面中
               sw.WriteLine(strhtml);
               sw.Flush();
               sw.Close();
           }
           //设置超级链接的属性
           hyCreateFile.Text=DateTime.Now.ToString("yyyymmddhhmmss")+".html";
           hyCreateFile.NavigateUrl="TextBox/"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";
       }
       catch(Exceptionerr)
       {
           Response.Write(err.ToString());
       }
   }
}

vs2005.net+winserver2003sp1下调试通过

 

   -------------------------------------------------------------------------------------------
  上一篇:aspx的一句话木马
  下一篇:ADO.NET使用经验集
   -------------------------------------------------------------------------------------------
用户名:
Email:
评论内容:
 
  精品推荐
推荐:ASPX一句话木马--终
利用ASP.Net 动态生成HTML
asp.net实现验证码
在asp.net中利用session做
Asp.net 中在客户端触发服
Asp.net 中服务端控件事件
ASP.NET上传图片并生成可
ASP.NET AJAX解决网页打开
实现IE浏览器部分菜单命令
Asp.net一夜速成教程
从sqlserver中读取图片
ASP.NET页面间的传值的几
用动态属性和DataView实现
用PagedDataSource类实现D
关于TreeView控件专题
asp.net上传图片并同时生
ASP.NET中水晶报表的使用
ASP.NET 中 Cookie 的基本
ADO.NET使用经验集
Forms身份验证
ASP.NET四种页面导航方式
ASP.NET中如何防范SQL注入
[分享]ASP.NET学习手记```
ASP.NET编程中的十大技巧
用ASP.NET上传图片并生成
关于我们 | 发展历程 | 在线投稿 | 核心监督 | 友情链接 | 网站地图 | 网站留言 | 联系我们
Copyright © 2004-2007 Www.Hx99.Net
版本:华西黑盟网站系统V5.0 Email:root#hx99.org
中国·西安·宝鸡 请使用IE6.0版本, 分辩率1024×768进行浏览
版权所有 任意抄袭 注意完整
陕ICP备06000444号