静态网页

静态网页
静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。你编的是什么它显示的就是什么、不会有任何改变。静态网页相对更新起来比较麻烦,适用于一般更新较少的展示型网站。
  在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,早期的网站一般都是由静态网页制作的。静态网页的网址形式通常为:www.example.com/eg/eg.htm,也就是以.htm、.html、.shtml、.xml等为后后缀的。在HTML格式的网页上,也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字母等,这些“动态效果”只是视觉上的,与下面将要介绍的动态网页是不同的概念。
  静态网页的特点简要归纳如下::
  (1)静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”;
  (2)网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
  (3)静态网页的内容相对稳定,因此容易被搜索引擎检索;
  (4)静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
  (5)静态网页的交互性较差,在功能方面有较大的限制。

 

 

静态网页,动态网页主要根据网页制作的语言来区分:
  静态网页使用语言:HTML(超文本标记语言)
  动态网页使用语言:HTML+ASP 或 HTML+PHP 或 HTML+JSP 等。
  静态网页与动态的区别
  程序是否在服务器端运行,是重要标志。在服务器端运行的程序、网页、组件,属于动态网页,它们会随不同客户、不同时间,返回不同的网页,例如ASP、PHP、JSP、ASP.net、CGI等。运行于客户端的程序、网页、插件、组件,属于静态网页,例如html页、Flash、JavaScript、VBScript等等,它们是永远不变的。
  静态网页和动态网页各有特点,网站采用动态网页还是静态网页主要取决于网站的功能需求和网站内容的多少,如果网站功能比较简单,内容更新量不是很大,采用纯静态网页的方式会更简单,反之一般要采用动态网页技术来实现。
  静态网页是网站建设的基础,静态网页和动态网页之间也并不矛盾,为了网站适应搜索引擎检索的需要,即使采用动态网站技术,也可以将网页内容转化为静态网页发布。
  动态网站也可以采用静动结合的原则,适合采用动态网页的地方用动态网页,如果必要使用静态网页,则可以考虑用静态网页的方法来实现,在同一个网站上,动态网页内容和静态网页内容同时存在也是很常见的事情。
  我们将动态网页的一般特点简要归纳如下:
  (1)动态网页以数据库技术为基础,可以大大减少降低网站维护的工作量;
  (2)采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;
  (3)动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;
  (4)动态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求
  区分动态网页与静态网页的基本方法:第一看后缀名,第二看是否能与服务器发生交互行为
  静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。你编的是什么它显示的就是什么、不会有任何改变。静态网页相对更新起来比较麻烦,适用于一般更新较少的展示型网站。

 

===================

方案1: 
  ///  <summary> 
  ///  传入URL返回网页的html代码 
  ///  </summary> 
  ///  <param  name="Url">URL </param> 
  ///  <returns> </returns> 
  public  static  string  getUrltoHtml(string  Url) 
  { 
  errorMsg  =  ""; 
  try 
  { 
  System.Net.WebRequest  wReq  =  System.Net.WebRequest.Create(Url); 
  //  Get  the  response  instance. 
  System.Net.WebResponse  wResp  =wReq.GetResponse(); 
  //  Read  an  HTTP-specific  property 
  //if  (wResp.GetType()  ==HttpWebResponse) 
  //{ 
  //DateTime  updated  =((System.Net.HttpWebResponse)wResp).LastModified; 
  //} 
  //  Get  the  response  stream. 
  System.IO.Stream  respStream  =  wResp.GetResponseStream(); 
  //  Dim  reader  As  StreamReader  =  New  StreamReader(respStream) 
  System.IO.StreamReader  reader  =  new  System.IO.StreamReader(respStream,  System.Text.Encoding.GetEncoding("gb2312")); 
  return  reader.ReadToEnd(); 
 
  } 
  catch(System.Exception  ex) 
  { 
  errorMsg  =  ex.Message  ; 
  } 
  return  ""; 
  } 
 
  你可以用这个函数获取网页的客户端的html代码,然后保存到.html文件里就可以了。 
 
  方案2: 
  生成单个的静态页面不是难点,难的是各个静态页面间的关联和链接如何保持完整; 
  特别是在页面频繁更新、修改、或删除的情况下; 
 
  像阿里巴巴的页面也全部是html的,估计用的是地址映射的功能 
  关于地址映射可参考:http://www.easewe.com/Article/ShowArticle.aspx?article=131 
 
  可以看看这个页面,分析一下他的“竞价倒计时”功能 
  http://info.china.alibaba.com/news/subject/v1-s5011580.html?head=top4&Bidding=home5 
 
  ASP.Net生成静态HTML页 
  在Asp中实现的生成静态页用到的FileSystemObject对象! 
  在.Net中涉及此类操作的是System.IO   
  以下是程序代码  注:此代码非原创!参考别人代码 
 
  CODE:   
  //生成HTML页 
  public  static  bool  WriteFile(string  strText,string  strContent,string  strAuthor)   
  { 
  string  path  =  HttpContext.Current.Server.MapPath("/news/"); 
  Encoding  code  =  Encoding.GetEncoding("gb2312"); 
  //  读取模板文件 
  string  temp  =  HttpContext.Current.Server.MapPath("/news/text.html"); 
  StreamReader  sr=null; 
  StreamWriter  sw=null; 
  string  str="";   
  try 
  { 
  sr  =  new  StreamReader(temp,  code); 
  str  =  sr.ReadToEnd();  //  读取文件 
  } 
  catch(Exception  exp) 
  { 
  HttpContext.Current.Response.Write(exp.Message); 
  HttpContext.Current.Response.End(); 
  sr.Close(); 
  } 
 
 
  string  htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html"; 
  //  替换内容 
  //  这时,模板文件已经读入到名称为str的变量中了 
  str  =str.Replace("ShowArticle",strText);  //模板页中的ShowArticle 
  str  =  str.Replace("biaoti",strText); 
  str  =  str.Replace("content",strContent); 
  str  =  str.Replace("author",strAuthor); 
  //  写文件 
  try 
  { 
  sw  =  new  StreamWriter(path  +  htmlfilename  ,  false,  code); 
  sw.Write(str); 
  sw.Flush(); 
  } 
  catch(Exception  ex) 
  { 
  HttpContext.Current.Response.Write(ex.Message); 
  HttpContext.Current.Response.End(); 
  } 
  finally 
  { 
  sw.Close(); 
  } 
  return  true; 
 
  此函数放在Conn.CS基类中了 
  在添加新闻的代码中引用  注:工程名为Hover 
 
  if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString))) 
  { 
  Response.Write("添加成功"); 
  } 
  else 
  { 
  Response.Write("生成HTML出错!"); 
  }   
 
 
  模板页Text.html代码 
 
  CODE:   
  <!DOCTYPE  HTML  PUBLIC  "-//W3C//DTD  HTML  4.0  Transitional//EN"  > 
  <HTML> 
  <HEAD> 
  <title>ShowArticle </title> 
  <body> 
  biaoti 
  <br> 
  content <br> 
  author 
  </body> 
  </HTML> 
  biaoti 
  <br> 
  content <br> 
  author 
  </body> 
  </HTML>   
 
  提示添加成功后会出以当前时间为文件名的html文件!上面只是把传递过来的几个参数直接写入了HTML文件中,在实际应用中需要先添加数据库,然后再写入HTML文件 
 
  方案3:
  给一个客户端参考的例子(SJ) 
  它的作用在于以客户端的方式获取某个页面的代码,然后可以做为其他用途,本例是直接输出 
  <script> 
  var  oXmlHttp  =  new  ActiveXObject("Microsoft.XMLHTTP"); 
  oXmlHttp.open("GET","http://www.163.com",  false); 
  oXmlHttp.send() 
  var  oStream  =  new  ActiveXObject("ADODB.Stream"); 
  if(oStream  ==  null) 
  alert("您的机器不支持ADODB.Stream.") 
  else 
  { 
  oStream.Type=1; 
  oStream.Mode=3; 
  oStream.Open()  ; 
  oStream.Write(oXmlHttp.responseBody); 
  oStream.Position=  0; 
  oStream.Type=  2; 
  oStream.Charset="gb2312"; 
  var  result=  oStream.ReadText(); 
  oStream.Close(); 
  oStream  =  null; 
  var  aa  =  window.open("","") 
  document.write(result); 
  aa.document.write(result); 
  } 
  </script> 
 
  方案4:学csdn一样。用xml保存数据,模版XSL也只有一个文件。 
  使用xml来保存数据,使用xsl来定义模板并且生称数据。可以通过xsl来很方便的在客户端或者服务段显示数据。如果要生成静态叶面那更简单了。去查一下.net的xml类包问题解决。 
  优点:可以方便快速转换成你想要的格式和内容。 
  缺点:需要学习更多的内容,不好入门。 
 
  方案5: 
  思路   
 
    1.  利用如Dw-Mx这样的工具生成html格式的模板,在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据。 
  2.  使用后台代码硬编码Html文件,可以使用HtmlTextWriter类来写html文件。   
  优点   
 
    1.  可以建立非常复杂的页面,利用包含js文件的方法,在js文件内加入document.write()方法可以在所有页面内加入如页面头,广告等内容。   
 
    2.  静态html文件利用MS  Windows2000的Index  Server可以建立全文搜索引擎,利用asp.net可以以DataTable的方式得到搜索结果。而Win2000的Index服务无法查找xml文件的内容。如果包括了数据库搜索与Index索引双重查找,那么此搜索功能将非常强大。   
 
    3.  节省服务器的负荷,请求一个静态的html文件比一个aspx文件服务器资源节省许多。   
 
    缺点   
 
    思路二:  如果用硬编码的方式,工作量非常大,需要非常多的html代码。调试困难。而且使用硬编码生成的html样式无法修改,如果网站更换样式,那么必须得重新编码,给后期带来巨大的工作量。   
 
    因此这里采用的是第一种思路   
 
    示列代码   
 
    1.定义(template.htm)html模板页面   
 
    <html>   
 
    <head>   
 
    <title></title>   
 
    <meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312">   
 
    </head>   
 
    <body  >   
 
    <table  $htmlformat[0]  height="100%"  border="0"  width="100%"  cellpadding="10"  cellspacing="0"  bgcolor="#eeeeee"  style='border:1px  solid  #000000'>   
 
    <tr>   
 
    <td  width="100%"  valign="middle"  align="left">   
 
    <span  style='color:  $htmlformat[1];font-size:  $htmlformat[2]'>$htmlformat[3]</span>   
 
    </td>   
 
    </tr>   
 
    </table>   
 
    </body>   
 
    </html>   
 
    2.asp.net代码:   
 
    //---------------------读html模板页面到stringbuilder对象里----   
 
    string[]  format=new  string[4];//定义和htmlyem标记数目一致的数组   
 
    StringBuilder  htmltext=new  StringBuilder();   
 
    try   
 
    {   
 
     using  (StreamReader  sr  =  new  StreamReader("存放模板页面的路径和页面名"))   
 
     {   
 
    String  line;   
 
    while  ((line  =  sr.ReadLine())  !=  null)   
 
    {   
 
     htmltext.Append(line);   
 
    }   
 
    sr.Close();   
 
     }   
 
    }   
 
    catch   
 
    {   
 
     Response.Write("<Script>alert('读取文件错误')</Script>");   
 
    }   
 
    //---------------------给标记数组赋值------------   
 
    format[0]="background="bg.jpg"";//背景图片   
 
    format[1]=  "#990099";//字体颜色   
 
    format[2]="150px";//字体大小   
 
    format[3]=  "<marquee>生成的模板html页面</marquee>";//文字说明   
 
    //----------替换htm里的标记为你想加的内容   
 
    for(int  i=0;i<4;i++)   
 
    {   
 
     htmltext.Replace("$htmlformat["+i+"]",format[i]);   
 
    }   
 
    //----------生成htm文件------------------――   
 
    try   
 
    {   
 
     using(StreamWriter  sw=new  StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312")))   
 
    {   
 
     sw.WriteLine(htmltext);   
 
     sw.Flush();   
 
     sw.Close();   
 
    }   
 
    }   
 
    catch   
 
    {   
 
    Response.Write  ("The  file  could  not  be  wirte:");   
 
    }   
 
    小结   
    用此方法可以方便的生成html文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快

 

http://topic.csdn.net/u/20100121/15/039fb826-1a62-4bdb-a069-7785a57f048f.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值