技术开发 频道

使用NVelocity0.5实现服务器端页面自动生成


【IT168技术文档】

  地球人都知道,静态HTML页面通常会比服务器端页面如asp、aspx页面要来的快,即使这些页面没有服务器端代码。
  另外要命的是,这些页面在主流的搜索引擎能中最为吃香,和那些aspx还带几个尾巴参数的页面比起来,真是天上地下。
  如果那天老板发现这个问题,叫你把辛辛苦苦实现的服务器端程序向静态HTML页面靠拢,你会做何感想?
  有一种URL重写的方案可以实现对搜索引擎的欺骗,除了这种方法,自动生成静态HTML页面应该是最彻底的方法了。
  言归正传,开始介绍如何实现吧
  1. 引用Nvelocity0.5,记得是0.5哦,NVelocity0.4我试过好久,好像不行,好像和路径有关系。
  2、引用一些需要的命名空间
using NVelocity; using NVelocity.App; using NVelocity.Exception; using NVelocity.Runtime; using NVelocityTemplateEngine; using NVelocityTemplateEngine.Interfaces;
  3、初始化一些变量来使用
INVelocityEngine fileEngine; IDictionary context;
/**//// <summary> /// 初始化NVelocity模板引擎并加载程序的配置信息e /// </summary> protected void InitTemplateEngine() { context = new Hashtable(); string templateDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Articles"); fileEngine = NVelocityEngineFactory.CreateNVelocityFileEngine(templateDirectory, true); }
  4、页面生成代码
public override void Execute() { string message = string.Format("Create the Helper class file."); log.Debug(message); string sql = string.Format("select * from article "); if (!isCreateAll) { sql = string.Format("select * from article where generated =False "); } using (IDataReader reader = xConfig.ExecuteReader(sql)) { while (reader.Read()) { PrepareClass(reader); OutputFile(); } } sql = "update article set generated =True "; if (!isCreateAll) { sql = "update article set generated =True where generated =False "; } xConfig.ExecuteNonQuery(sql); } /**//// <summary> /// Prepares the class content. /// </summary> private void PrepareClass(IDataReader reader) { FileNameOfOutput = string.Format("{0}#{1}", ((DateTime) reader["datetime"]).ToString("yyyy-MM-dd"), reader["id"].ToString()); context.Clear(); context.Add("id", reader["id"].ToString()); context.Add("category", reader["category"].ToString()); context.Add("title", reader["title"].ToString()); context.Add("content", reader["content"].ToString()); context.Add("datetime", reader["datetime"].ToString()); }
0
相关文章