`
maiguang
  • 浏览: 262540 次
  • 性别: Icon_minigender_1
  • 来自: 焦作
社区版块
存档分类
最新评论

网站建设之用asp.net生成html静态页的多种方法

阅读更多

第一种方法是对一个aspx页面生成html文件,先对服务器发送请求aspx页面,取服务器返回的html流,写到一个html文件里,aspx页面显示的是什么,生成的html页面就是什么

1、asp方法:

sub createHTML
  dim xmlhttp,strhtml,objAdoStream,i,myurl
  set xmlhttp=server.CreateObject("Microsoft.XMLHTTP")
  Randomize
  i=Int((100 * Rnd) + 1)' 产生1到100之间的随机数,强制从数据库取数据
  myurl="asp页面文件名.asp?i=" &i
  xmlhttp.open "GET",myurl,false
  xmlhttp.send
  strhtml=xmlhttp.responsebody

  set objAdoStream = Server.CreateObject("ADODB.Stream")
  objAdoStream.Type = 1
  objAdoStream.Open
  objAdoStream.Write strhtml
  objAdoStream.SaveToFile server.MapPath("default.htm"),2
  objAdoStream.Close
  response.Write("成生完毕")
end sub

2、VB.NET做脚本的时候的asp.net方法:(载自:http://erqie.bokee.com/5641140.html

引用命名空间
Imports System.Net
Imports System.IO   

    Dim strHtml As String
    Dim sr As StreamReader
    Dim sw As StreamWriter
    Dim code As Encoding = Encoding.GetEncoding("utf-8")
    Dim HttpWebRequest As WebRequest
    Dim HttpWebResponse As WebResponse
    HttpWebRequest = WebRequest.Create("http://localhost/test.aspx")
    HttpWebResponse = HttpWebRequest.GetResponse
    sr = New StreamReader(HttpWebResponse.GetResponseStream, code)
    strHtml = sr.ReadToEnd
    sw = New StreamWriter(Server.MapPath("a.htm"), False, code)
    sw.WriteLine(strHtml)
    sw.Flush()
    sw.Close()
    Response.WriteFile(Server.MapPath("a.htm"))

3、用C#做脚本的asp.net的方法,这个是我自己写的,在《Visual C#.NET范例入门与提高》的P311,有对WebRequest和HttpRequest、HttpWebRequest、HttpWebResponse四个类的简单说明

private bool CreateList(string url, string fna)
    {
        bool ok;
        //准备生成
        string strHtml;
        StreamReader sr = null; //用来读取流
        StreamWriter sw = null; //用来写文件
        Encoding code = Encoding.GetEncoding("utf-8"); //定义编码

        //构造web请求,发送请求,获取响应
        WebRequest HttpWebRequest = null;
        WebResponse HttpWebResponse = null;
        HttpWebRequest = WebRequest.Create(url);
        HttpWebResponse = HttpWebRequest.GetResponse();

        //获得流
        sr = new StreamReader(HttpWebResponse.GetResponseStream(), code);
        strHtml = sr.ReadToEnd();

        //写入文件
        try
        {
            sw = new StreamWriter(fna, false, code);
            sw.Write(strHtml);
            sw.Flush();
            ok = true;
        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Write("<p>写入文件出错:" + ex.Message);
            HttpContext.Current.Response.End();
            ok = false;
        }
        finally
        {
            sw.Close();
        }
        return ok;
    }

调用的时候这样:

//要生成html页面的aspx页面
        string url = @"http://localhost/list.aspx";
        //html页面文件名
        string fna = Server.MapPath("") + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + ".html";
        if (CreateList(url, fna))
        {
            Response.Write("<p>生成文件成功:" + fna);
        }

第二种方法是用一个html模板生成一个html页面,模版里面有对应的标签,可以从数据库和别的地方取数据,填写这个标签,生成一个html页面,这个方法在很多新闻系统里有用到

我参考这里面的代码写的:http://www.webstudy8.com/web/net/201/065118272748882.html

private string CreateDetailPage(string EventID,string EventTitle, string EventBody, string EventTime, string EventStat)
    {
        //模版所有路径、模版文件名、生成的文件路径、生成的文件名
        string path, temp, htmlfilepath,htmlfilename;
        path = Server.MapPath("");
        temp = Server.MapPath("testhtml.htm");
        htmlfilepath = path;
        htmlfilename = DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + ".html";

        //读模版
        Encoding code = Encoding.GetEncoding("gb2312");

        StreamReader sr = null;
        StreamWriter sw = null;
        string str = "";

        try
        {
            sr = new StreamReader(temp, code);
            str = sr.ReadToEnd(); // 读取文件
        }
        catch (Exception exp)
        {
            HttpContext.Current.Response.Write("<p>读取文件出错:" + exp.Message);
            HttpContext.Current.Response.End();
            sr.Close();
        }

        // 替换内容
        // 对应模版里的设置要修改
        str = str.Replace("re_symbol_EventID", EventID);
        str = str.Replace("re_symbol_EventTitle", EventTitle);
        str = str.Replace("re_symbol_EventBody", EventBody);
        str = str.Replace("re_symbol_EventTime", EventTime);
        str = str.Replace("re_symbol_EventStat", EventStat);

        // 写文件
        try
        {
            sw = new StreamWriter(htmlfilepath + "\\" + htmlfilename, false, code);
            sw.Write(str);
            sw.Flush();
        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Write("<p>写入文件出错:" + ex.Message);
            HttpContext.Current.Response.End();
        }
        finally
        {
            sw.Close();
        }
        return htmlfilename;
    }

调用的时候这样:

//取内容,这里我取了页面上的一个gridview里的选中行的数据
        int i;
        i = GridView1.SelectedIndex;
        if (i == null || i==-1) i = 0;
        string EventID, EventTitle, EventBody, EventTime, EventStat;
        EventID=GridView1.Rows[i].Cells[0].Text;
        EventTitle=GridView1.Rows[i].Cells[1].Text;
        EventBody=GridView1.Rows[i].Cells[2].Text;
        EventTime=GridView1.Rows[i].Cells[3].Text;
        EventStat=GridView1.Rows[i].Cells[4].Text;
       
        //生成文件,返回文件名
        string fna;
        fna=CreateDetailPage(EventID, EventTitle, EventBody, EventTime, EventStat);
        Response.Write("<p>生成文件成功:" + fna);

对比两种方法,我觉得第二种比第一种好,灵活,生成的速度快

因为第一种方法,要发送请求,请求在服务器端访问数据库,生成html流,返回客户端,我们要获取这个html流,第二种方法,只要访问数据库,取数据,读取文本文件(html模版),替换文本,就可以了

模板文件是静态的html页面,修改很方便,在asp.net里,如果生成一个aspx页面,当我们要改变页面的时候,我们要重新修改aspx页面,有时候我们要重新编译整个网站才可以运行,如果修改模板就没有这个问题了

分享到:
评论

相关推荐

    asp.net 生成静态

    在大型网站的建设中,为了提高网站的访问速度、减轻服务器负担以及优化搜索引擎排名,生成静态页面(Static Generation)是一种常见的策略。本文将深入探讨ASP.NET中如何实现静态页面生成。 生成静态页面意味着将...

    vs2008生成静态页面html

    在IT行业中,生成静态页面HTML是一项常见的需求,特别是在网站建设和内容管理系统中。Visual Studio 2008(简称VS2008)是一款强大的开发工具,它提供了多种方式来实现这个目标,尤其对于初学者来说,这是一个很好的...

    ASP.NET个人网站微软官方实例

    通过"ASP.NET个人网站微软官方实例",你可以逐步学习和实践这些知识点,从创建基本的静态页面到实现复杂的用户交互,再到数据库的集成和安全性的配置。这个实例将帮助你掌握ASP.NET开发的全貌,为未来更深入的学习和...

    网奇E游通旅游网站建设系统.net版v1.5

    网奇E游通旅游网站建设系统采用三层架构开发,全站生成存静态HTML,页面代码全部采用DIV CSS,完全符合SEO标准,有利于搜索引擎关键排名优化,前台基于下一代互联网渲染技术,让您的网站在未来发展中处于领先地位!...

    asp.net 网站内容管理系统

    ASP.NET网站内容管理系统(CMS)...综上所述,ASP.NET网站内容管理系统提供了丰富的功能,适用于各种类型的网站建设和运营。无论是小型企业还是大型组织,都可以利用其强大的工具和灵活性来满足其在线内容管理的需求。

    生成静态html文件的企业门户网站系统

    全国知名美工制作模板,标准化设计的企业门户网站建站管理系统,完全免费的灯饰企业公司网站源码,安防公司网站模板,生成html的包装公司网站模板,印刷厂网站源码,机床公司网站模板,家居装饰公司网站建设,...

    KingCMS for ASP.net v1.0.0.74_kingcms_asp.net1.0.zip

    此版本的CMS旨在提供一个高效、易用且功能丰富的网站建设和管理解决方案,尤其适合那些熟悉ASP.NET开发环境的用户。下面我们将深入探讨这款CMS的核心特性、功能以及它如何在实际应用中发挥作用。 首先,KingCMS采用...

    asp.net 开发人才招聘网源码下载

    本系统主要特点是区别人以往人才招聘模式,采用了最科学化的人才招聘模式,如:增加招才币,积分,积分兑换招才币等等,即使...网站生成静态HTML页面,不仅大大提高搜索引擎收录,而且提高了网站的访问速度和效率。

    很好的生成静态的企业网站源码

    在IT行业中,生成静态网页是一种常见的优化网站性能和提高安全性的方法。动态网站与静态网站是两种不同的构建方式,它们各自具有独特的优缺点。本文将深入探讨“动生静态”这一概念,以及如何利用源码生成静态的企业...

    网软志成分类信息网站系统.net官方商业版

    分类信息系统源码,分类信息网源码下载,分类信息网站全站源码,分类信息网站模板,网页模板,分类信息发布网站系统采用asp.net编程并采用mssql大型数据库,并可后台控制生成静态html文件,或者不生成html,开发的生活分类...

    ASP.NET源码——GGCMS企业自助建站内容管理系统.zip

    6. **搜索引擎优化**:提供友好的URL结构,支持静态页生成,提高搜索引擎排名。 7. **插件扩展**:可能提供丰富的插件接口,便于功能扩展,如表单收集、社交媒体分享等。 8. **数据备份与恢复**:确保网站数据安全,...

    非常不错的企业网站管理系统生成HTML版

    本系统是为中小型企业量身打造的一套高效网站建设的系统。它具有完善的企业网站功能模块,全面整合信息协同管理系统(OA),在独立动态后台管理生成HTML静态前台网页。让您提升建站效率,提高服务质量,降低建站成本。...

    ASP.NET-[CMS程序]经典设计v2.0.zip

    ASP.NET CMS程序经典设计v2.0是一款基于微软的ASP.NET技术开发的网站内容管理系统,旨在为用户提供高效、易用的网站建设和管理平台。这款系统的设计理念是将复杂的网站管理和内容发布过程简化,使得非技术人员也能...

    .net婚庆公司全站

    使用ASP.NET的SEO友好特性,如生成静态HTML页面、自定义URL重写规则,有助于提升搜索引擎排名,增加网站的曝光度。 在测试与部署环节,.NET的调试工具和Visual Studio IDE提供了强大的支持,便于查找和修复错误。...

    ASP动态网站建设

    8. **ASP.NET的发展**:虽然ASP技术本身已经有些年头,但随着.NET框架的发展,ASP已经演变为ASP.NET,引入了更多的功能和改进,如更强大的控件、面向对象编程、ASP.NET MVC模式等,为开发者提供了更高效、安全的开发...

    ASP个人网站建设设计(源代码+论文).zip

    这个压缩包“ASP个人网站建设设计(源代码+论文).zip”显然包含了一个使用ASP技术构建的个人网站的完整设计,包括源代码和相关的论文文档。下面,我们将深入探讨ASP在个人网站设计中的应用及其相关知识点。 1. ASP...

Global site tag (gtag.js) - Google Analytics