|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。静态|模板|天生html|页面一向觉得静态天生静态页面欠好做,今天在网上找了下,我晕,实在很复杂,思绪也许是如许的,
1:创建一个html页面模板,在这个页面中把你想要静态显现的中央用特别的字符串暗示(如$htmlstrstr$);
2:在程序顶用将这个html页面读到一个字符串变量如str;
3:用字符串的resplace办法将在第一步中特别字符交换成你想要的内容;
4保留;
OK,soeasy,明天就用C#写了一个如许的类,用来处置静态天生html页面的,自以为还写的完全,刚打仗.NET不久,看指教
注:此类中的代码不满是原创,部分代码参照网友的代码!
以下是转换类的代码
代码
1usingSystem;
2usingSystem.Text;
3usingSystem.Web;
4usingSystem.Configuration;
5usingSystem.IO;
6namespacesolucky
7{
8/**////<summary>
9///AspxToHtml的择要申明。
10///注:利用此类,你能够在web.config文件对模板类举行设置.以下
11/**//*<appSettings>
12<addkey="templateFilePath"value="htmlmoudel.htm"/>
13<addkey="htmlFilePath"value="new/"></add>
14<addkey="ErrLogPath"value="aspxTohtml_log.txt"></add>
15</appSettings>*/
16/**////</summary>
17publicclassAspxToHtml
18{
19/**////<summary>
20///模板文件中要替换的参数个数
21///</summary>
22privateint_templateParamCount=0;
23/**////<summary>
24///模板文件地点的路径
25///</summary>
26privatestring_templateFilePath=ConfigurationSettings.AppSettings["templateFilePath"];
27/**////<summary>
28///转换后的html文件所寄存的路径
29///</summary>
30privatestring_htmlFilePath=ConfigurationSettings.AppSettings["htmlFilePath"];
31
32/**////<summary>
33///模板页页面编码
34///</summary>
35privateEncoding_templateHtmlCode=Encoding.GetEncoding("gb2312");
36
37/**////<summary>
38///转换后的文件编码
39///</summary>
40privateEncoding_code=Encoding.GetEncoding("gb2312");
41
42/**////<summary>
43///转换后的html文件名
44///</summary>
45privatestring_convertedFilename="";
46/**////<summary>
47///模板文件中的参数
48///</summary>
49privatestring[]_templateFileparameter;
50
51/**////<summary>
52///aspx文件中的要取代HTML文件中的参数实践值
53///</summary>
54privatestring[]_aspxFileparameter;
55
56privatestring_errlogPath=ConfigurationSettings.AppSettings["ErrLogPath"];
57
58属性#region属性
59
60/**////<summary>
61///模板文件中要替换的参数个数
62///</summary>
63publicintTemplateParamCount
64{
65get
66{
67returnthis._templateParamCount;
68}
69set//分派参数个数时,同时为模板文件中的参数和aspx文件中的要取代HTML文件中的参数实践值这两个分派实践数组
70{
71if(value<0)
72thrownewArgumentException();
73
74if(value>0)
75{
76this._templateParamCount=value;
77//模板文件中的参数
78_templateFileparameter=newstring[value];
79//aspx文件中的要取代HTML文件中的参数实践值
80_aspxFileparameter=newstring[value];
81}
82else
83this._templateParamCount=0;
84}
85}
86
87/**////<summary>
88///模板文件地点的路径
89///
90///</summary>
91publicstringTemplateFilePath
92{
93get{returnthis._templateFilePath;}
94set{this._templateFilePath=value;}
95}
96/**////<summary>
97///转换后的html文件所寄存的路径
98///</summary>
99publicstringHtmlFilePath
100{
101get{returnthis._htmlFilePath;}
102set{this._htmlFilePath=value;}
103}
104
105/**////<summary>
106///html模板文件编码
107///</summary>
108publicEncodingTemplateHtmlCode
109{
110get{returnthis._templateHtmlCode;}
111set{this._templateHtmlCode=Encoding.GetEncoding(value.ToString());}
112}
113/**////<summary>
114///编码
115///</summary>
116publicEncodingCode
117{
118get{returnthis._code;}
119set{this._code=Encoding.GetEncoding(value.ToString());}
120}
121/**////<summary>
122///毛病文件地点路径
123///</summary>
124publicstringErrLogPath
125{
126get{
127if(!(this._errlogPath==null))
128returnthis._errlogPath;
129else
130return"aspxTohtml_log.txt";
131}
132set{this._errlogPath=value;}
133}
134
135
136#endregion
137
138操纵#region操纵
139
140/**////<summary>
141///猎取转换后的html文件地点绝对文件路径
142///如:假如HtmlFilePath="/news/"
143///转换后的html文件名为200505050505.html
144///则前往的值为/news/200505050505.html
145///</summary>
146///<remarks>假如在未挪用StartConvert办法之前挪用此属性则前往null</remarks>
147publicstringHtmlFileVirtualPath
148{
149get
150{
151if(!(this._convertedFilename==""))
152returnthis.HtmlFilePath+this._convertedFilename;
153else
154returnnull;
155}
156}
157
158/**////<summary>
159///为HTML页面参数数组付值
160///</summary>
161///<paramname="param"></param>
162publicvoidsetTemplateFileparameter(string[]param)
163{
164try
165{
166if(param.Length==this.TemplateParamCount)
167this._templateFileparameter=param;
168//else//与原界说的个数不等
169//
170}
171catch(System.Exceptionex)
172{
173WriteErrFile(ex);
174}
175}
176/**////<summary>
177///为aspx文件中将要交换html文件中的参数数组付值
178///</summary>
179///<paramname="param"></param>
180publicvoidsetAspxFileparameter(string[]param)
181{
182try
183{
184if(param.Length==this.TemplateParamCount)
185this._aspxFileparameter=param;
186//else//与原界说的个数不等
187//
188}
189catch(System.Exceptionex)
190{
191WriteErrFile(ex);
192}
193}
194/**////<summary>
195///入手下手举行aspxTohtml转换
196///</summary>
197///<returns>前往值为乐成创立后的文件称号</returns>
198///<remarks>在挪用此办法之前必须断定已挪用setTemplateFileparameter和setAspxFileparameter办法举行响应的付值操纵</remarks>
199publicstringStartConvert()
200{
201if(this._templateFileparameter.Length==this._aspxFileparameter.Length)
202{
203returnwriteFile();
204}
205else{
206returnnull;
207}
208}
209/**////<summary>
210///入手下手举行aspxTohtml转换
211///</summary>
212///<paramname="htmlparam">html模板页中的一切参数数组</param>
213///<paramname="aspxparam">aspx页面中要取代html模板页中参数值数组</param>
214///<returns>前往值为乐成创立后的文件称号</returns>
215publicstringStartConvert(string[]htmlparam,string[]aspxparam)
216{
217//先挪用setTemplateFileparameter和setAspxFileparameter办法,举行付值操纵
218setTemplateFileparameter(htmlparam);
219setAspxFileparameter(aspxparam);
220//
221stringfn=this.StartConvert();
222//
223_convertedFilename=fn;
224//
225returnfn;
226}
227
228/**////<summary>
229///用工夫加随机数天生一个文件名
230///</summary>
231///<returns></returns>
232privatestringgetfilename()
233{
234//用工夫加随机数天生一个文件名
235System.Threading.Thread.Sleep(50);
236stringyearStr=System.DateTime.Now.Year.ToString();
237stringmonthStr=string.Format("{0:0#}",System.DateTime.Now.Month);
238stringdayStr=string.Format("{0:0#}",System.DateTime.Now.Day);
239stringhourStr=string.Format("{0:0#}",System.DateTime.Now.Hour);
240stringminuteStr=string.Format("{0:0#}",System.DateTime.Now.Minute);
241stringsecondStr=string.Format("{0:0#}",System.DateTime.Now.Second);
242stringmillisecondStr=string.Format("{0:000#}",System.DateTime.Now.Millisecond);
243System.Randomrd=newSystem.Random();
244returnyearStr+monthStr+dayStr+hourStr+minuteStr+secondStr+millisecondStr+string.Format("{0:0000#}",rd.Next(100))+".html";
245//returnDateTime.Now.ToString("yyyyMMddHHmmss")+".html";
246}
247/**////<summary>
248///举行转换处置
249///</summary>
250///<returns>前往以工夫定名的文件名</returns>
251privatestringwriteFile()
252{
253
254//读取模板文件
255stringtemp=HttpContext.Current.Server.MapPath(this.TemplateFilePath);
256StreamReadersr=null;
257stringstr="";
258try
259{
260sr=newStreamReader(temp,this.TemplateHtmlCode);
261str=sr.ReadToEnd();//读取文件
262}
263catch(Exceptionex)
264{
265//HttpContext.Current.Response.Write(exp.Message);
266//HttpContext.Current.Response.End();
267WriteErrFile(ex);
268}
269finally
270{
271sr.Close();
272}
273//交换内容
274//这时候,模板文件已读进到称号为str的变量中了
275for(inti=0;i<this.TemplateParamCount;i++)
276{
277str=str.Replace(this._templateFileparameter[i],this._aspxFileparameter[i]);
278}
279
280returnsavefile(str);
281}
282
283/**////<summary>
284///
285///</summary>
286///<paramname="str"></param>
287///<returns></returns>
288
289privatestringsavefile(stringstr)
290{
291//写文件
292StreamWritersw=null;
293try
294{
295
296stringpath=HttpContext.Current.Server.MapPath(this.HtmlFilePath);
297//html文件称号
298stringhtmlfilename=getfilename();
299sw=newStreamWriter(path+htmlfilename,false,this.Code);
300sw.Write(str);
301sw.Flush();
302returnhtmlfilename;
303}
304catch(Exceptionex)
305{
306WriteErrFile(ex);
307}
308finally
309{
310sw.Close();
311}
312return"";
313}
314
315/**////<summary>
316///传进URL前往网页的html代码
317///</summary>
318///<paramname="Url">URL</param>
319///<returns></returns>
320publicstringgetUrltoHtml(stringUrl)
321{
322try
323{
324System.Net.WebRequestwReq=System.Net.WebRequest.Create(Url);
325System.Net.WebResponsewResp=wReq.GetResponse();
326System.IO.StreamrespStream=wResp.GetResponseStream();
327System.IO.StreamReaderreader=newSystem.IO.StreamReader(respStream,System.Text.Encoding.GetEncoding("gb2312"));
328returnsavefile(reader.ReadToEnd());
329
330}
331catch(System.Exceptionex)
332{
333WriteErrFile(ex);
334}
335return"";
336}
337#endregion
338
339
340机关#region机关
341
342publicAspxToHtml()
343{
344//
345//TODO:在此处增加机关函数逻辑
346//
347}
348
349privatevoidsettemplateParamCount(inttemplateParamCount)
350{
351if(templateParamCount>0)
352this.TemplateParamCount=templateParamCount;
353}
354/**////<summary>
355///供应欲取代的参数个数
356///</summary>
357///<paramname="templateParamCount"></param>
358publicAspxToHtml(inttemplateParamCount)
359{
360settemplateParamCount(templateParamCount);
361
362}
363/**////<summary>
364///
365///</summary>
366///<paramname="templateParamCount">html模板页中的参数个数</param>
367///<paramname="htmlFilePath">天生的html文件所寄存的文件夹路径</param>
368///<paramname="templateFilePath">html模板页路径</param>
369publicAspxToHtml(inttemplateParamCount,stringhtmlFilePath,stringtemplateFilePath)
370{
371settemplateParamCount(templateParamCount);
372this.HtmlFilePath=htmlFilePath;
373this.TemplateFilePath=templateFilePath;
374
375}
376#endregion
377
378#region
379
380/**////<summary>
381///把毛病写进文件办法#region把毛病写进文件办法
382///</summary>
383///<paramname="ee"></param>
384privatevoidWriteErrFile(Exceptionee)
385{
386
387FileStreamfs1=newFileStream(HttpContext.Current.Server.MapPath(ErrLogPath),System.IO.FileMode.Append);
388StreamWritersw1=newStreamWriter(fs1);
389sw1.WriteLine("**************************************************");
390sw1.WriteLine("毛病日期:"+System.DateTime.Now);
391sw1.WriteLine("毛病形貌:"+ee.Message);
392sw1.WriteLine("毛病称号:"+ee.Source);
393sw1.WriteLine("具体:"+ee.ToString());
394sw1.WriteLine("*************************************************");
395sw1.Close();
396}
397#endregion
398}
399}
400
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。 |
|