.net生成静态页方法总结
2008-11-29 16:08
483 查看
第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,再以流的形式写入文件.
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()
6Dim 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(),从文件读取模版,替换模版中的参数后输出文件,这种方法的生成速度上比第一种要快许多,而且模版内容可以用工具任意编辑
主要代码:
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
这个方法读取的是硬盘里的纯文件类型,在程序后台查询数据去替换掉模板文件里的特定字符.
用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,再以流的形式写入文件.
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()
6Dim 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(),从文件读取模版,替换模版中的参数后输出文件,这种方法的生成速度上比第一种要快许多,而且模版内容可以用工具任意编辑
主要代码:
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
这个方法读取的是硬盘里的纯文件类型,在程序后台查询数据去替换掉模板文件里的特定字符.
相关文章推荐
- .net生成静态页方法总结
- 关于.net生成静态页面的方法总结
- .net生成静态页方法总结
- Asp生成静态页的方法总结
- 关于.net生成静态页面的方法总结
- .Net生成静态页的方法
- .Net生成静态页的方法(第2种)
- 生成mif文件的几种方法总结
- js调用.net后台事件,和后台调用前台等方法总结(转帖)
- 线程同步 .net 实现方法的总结 (转载的)
- jquery 给动态生成的标签绑定事件的几种方法总结
- Render方法生成静态页
- .Net生成HTML的三种方法
- .net 2.0 生成缩略图的方法
- .NET模板引擎 EFPlatform.CodeGenerator (代码生成器 静态页生成 生成HTML 模板)
- .Net生成静态页并实现分页效果
- php动态页生成静态页的实用方法
- .NET生成随机数方法
- android studio library生成jar包和aar的方法总结
- 程序员面试金典——解题总结: 9.18高难度题 18.9随机生成一些数字并传入某个方法。编写一个程序,每当收到新数字时,找出并记录中位数。