关闭

.net生成静态页方法总结

发表于:2008-11-07 16:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

#
.NET

  第1种方法:

  用server.Execute(path As String,writer As Sysetem.IO.TextWriter) 方法,这种方法很简单,向服务器放松动态网页请求,获取页面的客户端html代码,然后把内容写进文件里.这种方法写起来比较简单:

1        Dim swHtml As StringWriter = New StringWriter()
2        Server.Execute("http://localhost/newsSzhome/manage/newstemplate.aspx, swHtml)
3        Dim strContent As String = swHtml.ToString()
4
5        Dim filepath As String = "d//news//001.html"
6        If Not (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(filepath))) Then
7           System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filepath))
8        End If
9        Dim sw As StreamWriter = New StreamWriter(filepath, False, System.Text.Encoding.Default)
10       Try
11           sw.Write(strContent )
12       Catch ex As Exception
13           Throw ex
14       Finally
15           sw.Flush()
16           sw.Close()
17       End Try  

  这种方法是必须读网页地址,缺点显而易见:速度慢。另外如果请求的动态页面有验证控件的话,返回的html页面却无法进行数据验证。如果在同一个项目里的程序用这个还是很好的,但是如果是要把生成程序跟网页程序分开(如写成webservice)的话,用这个方法就相当与去打开一个外网网页,效率肯定会大打折扣(而且我在webservice上用这方法根本运行不了,程序出异常!具体原因没有去探索,估计应该是权限的问题).
      
  第2种方法:

  这个方法跟第1种方法相似(也是需要读取网页内容),用System.Net.WebRequest.Create(path As String)方法建里一个需要读取的网页的webRequest,再获得它的WebResponse,再以流的形式写入文件.

  System.Net.WebRequest 代码实例:

1 Dim wReq As System.Net.WebRequest = System.Net.WebRequest.Create("http://localhost/newsSzhome/manage/newstemplate.aspx"
2         Dim wResp As System.Net.WebResponse = wReq.GetResponse
3         Dim srs As System.IO.Stream = wResp.GetResponseStream
4         Dim sr As System.IO.StreamReader = New System.IO.StreamReader(srs, System.Text.Encoding.Default) 'GetEncoding("gb2312"))
5         Dim strContent As String = sr.ReadToEnd()
6 Dim filepath As String = "d://news//0001.html"
7         If Not (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(filepath))) Then
8             System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filepath))
9         End If
10        Dim sw As StreamWriter = New StreamWriter(filepath, False, System.Text.Encoding.Default)
11        Try
12            sw.Write(temp)
13        Catch ex as Exception
14            Throw ex
15        Finally
16            sw.Flush()
17            sw.Close()
18        End Try   

  效果就不多说了,跟第1种方法问题一样!(但是我在webservice中用上面这个方法生成时还是可以成功的,但是速度慢很多.)      

  第3种:

  就是最常用也最实用的字符替代方法String.Replace(),从文件读取模版,替换模版中的参数后输出文件,这种方法的生成速度上比第一种要快许多,而且模版内容可以用工具任意编辑

  主要代码:

  String.Replace方法

1    Dim sr As New System.IO.StreamReader("d://newsDetail_template.htm", System.Text.Encoding.Default)
2         Dim temp As String = sr.ReadToEnd()
3         temp = temp.Replace("@$_CREATEDATE_$@", DateTime.Now.ToString)
4    Dim filepath As String = "d://news//001.html"
5         If Not (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(filepath))) Then
6             System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filepath))
7         End If
8         Dim sw As StreamWriter = New StreamWriter(filepath, False, System.Text.Encoding.Default)
9         Try
10            sw.Write(temp)
11        Catch
12            Return false
13        Finally
14            sw.Flush()
15            sw.Close()
16        End Try         

  这个方法读取的是硬盘里的纯文件类型,在程序后台查询数据去替换掉模板文件里的特定字符。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号