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

地球人都知道,静态HTML页面通常会比服务器端页面如asp、aspx页面要来的快,即使这些页面没有服务器端代码。
另外要命的是,这些页面在主流的搜索引擎能中最为吃香,和那些aspx还带几个尾巴参数的页面比起来,真是天上地下。
如果那天老板发现这个问题,叫你把辛辛苦苦实现的服务器端程序向静态HTML页面靠拢,你会做何感想?
有一种URL重写的方案可以实现对搜索引擎的欺骗,除了这种方法,自动生成静态HTML页面应该是最彻底的方法了。
言归正传,开始介绍如何实现吧
1. 引用Nvelocity0.5,记得是0.5哦,NVelocity0.4我试过好久,好像不行,好像和路径有关系。
2、引用一些需要的命名空间
使用NVelocity0.5实现服务器端页面自动生成using NVelocity;
使用NVelocity0.5实现服务器端页面自动生成using NVelocity.App;
使用NVelocity0.5实现服务器端页面自动生成using NVelocity.Exception;
使用NVelocity0.5实现服务器端页面自动生成using NVelocity.Runtime;
使用NVelocity0.5实现服务器端页面自动生成using NVelocityTemplateEngine;
使用NVelocity0.5实现服务器端页面自动生成using NVelocityTemplateEngine.Interfaces;
3、初始化一些变量来使用
使用NVelocity0.5实现服务器端页面自动生成        INVelocityEngine fileEngine;
使用NVelocity0.5实现服务器端页面自动生成        IDictionary context;
使用NVelocity0.5实现服务器端页面自动生成        /// <summary>
使用NVelocity0.5实现服务器端页面自动生成        
/// 初始化NVelocity模板引擎并加载程序的配置信息e
使用NVelocity0.5实现服务器端页面自动生成        
/// </summary>

使用NVelocity0.5实现服务器端页面自动生成        protected void InitTemplateEngine()
使用NVelocity0.5实现服务器端页面自动生成        {
使用NVelocity0.5实现服务器端页面自动生成            context = new Hashtable();
使用NVelocity0.5实现服务器端页面自动生成            string templateDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Articles");
使用NVelocity0.5实现服务器端页面自动生成            fileEngine = NVelocityEngineFactory.CreateNVelocityFileEngine(templateDirectory, true);
使用NVelocity0.5实现服务器端页面自动生成        }
4、页面生成代码
使用NVelocity0.5实现服务器端页面自动生成        public override void Execute()
使用NVelocity0.5实现服务器端页面自动生成        {
使用NVelocity0.5实现服务器端页面自动生成            string message = string.Format("Create the Helper class file.");
使用NVelocity0.5实现服务器端页面自动生成            log.Debug(message);
使用NVelocity0.5实现服务器端页面自动生成
使用NVelocity0.5实现服务器端页面自动生成            string sql = string.Format("select * from article ");
使用NVelocity0.5实现服务器端页面自动生成            if (!isCreateAll)
使用NVelocity0.5实现服务器端页面自动生成            {
使用NVelocity0.5实现服务器端页面自动生成                sql = string.Format("select * from article where generated =False ");
使用NVelocity0.5实现服务器端页面自动生成            }

使用NVelocity0.5实现服务器端页面自动生成
使用NVelocity0.5实现服务器端页面自动生成            using (IDataReader reader = xConfig.ExecuteReader(sql))
使用NVelocity0.5实现服务器端页面自动生成            {
使用NVelocity0.5实现服务器端页面自动生成                while (reader.Read())
使用NVelocity0.5实现服务器端页面自动生成                {
使用NVelocity0.5实现服务器端页面自动生成                    PrepareClass(reader);
使用NVelocity0.5实现服务器端页面自动生成                    OutputFile();
使用NVelocity0.5实现服务器端页面自动生成                }

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

使用NVelocity0.5实现服务器端页面自动生成            
使用NVelocity0.5实现服务器端页面自动生成            sql = "update article set generated =True ";
使用NVelocity0.5实现服务器端页面自动生成            if (!isCreateAll)
使用NVelocity0.5实现服务器端页面自动生成            {
使用NVelocity0.5实现服务器端页面自动生成                sql = "update article set generated =True  where generated =False ";
使用NVelocity0.5实现服务器端页面自动生成            }

使用NVelocity0.5实现服务器端页面自动生成            xConfig.ExecuteNonQuery(sql);
使用NVelocity0.5实现服务器端页面自动生成        }

使用NVelocity0.5实现服务器端页面自动生成
使用NVelocity0.5实现服务器端页面自动生成        /// <summary>
使用NVelocity0.5实现服务器端页面自动生成        
/// Prepares the class content.
使用NVelocity0.5实现服务器端页面自动生成        
/// </summary>

使用NVelocity0.5实现服务器端页面自动生成        private void PrepareClass(IDataReader reader)
使用NVelocity0.5实现服务器端页面自动生成        {
使用NVelocity0.5实现服务器端页面自动生成            FileNameOfOutput = string.Format("{0}#{1}", ((DateTime) reader["datetime"]).ToString("yyyy-MM-dd"), reader["id"].ToString());
使用NVelocity0.5实现服务器端页面自动生成
使用NVelocity0.5实现服务器端页面自动生成            context.Clear();
使用NVelocity0.5实现服务器端页面自动生成            context.Add("id", reader["id"].ToString());
使用NVelocity0.5实现服务器端页面自动生成            context.Add("category", reader["category"].ToString());
使用NVelocity0.5实现服务器端页面自动生成            context.Add("title", reader["title"].ToString());
使用NVelocity0.5实现服务器端页面自动生成            context.Add("content", reader["content"].ToString());
使用NVelocity0.5实现服务器端页面自动生成            context.Add("datetime", reader["datetime"].ToString());
使用NVelocity0.5实现服务器端页面自动生成        }
使用NVelocity0.5实现服务器端页面自动生成
使用NVelocity0.5实现服务器端页面自动生成        /// <summary>
使用NVelocity0.5实现服务器端页面自动生成        
///根据模板创建输出的文件
使用NVelocity0.5实现服务器端页面自动生成        
/// </summary>

使用NVelocity0.5实现服务器端页面自动生成        public virtual void OutputFile()
使用NVelocity0.5实现服务器端页面自动生成        {
使用NVelocity0.5实现服务器端页面自动生成            if (fileEngine != null)
使用NVelocity0.5实现服务器端页面自动生成            {
使用NVelocity0.5实现服务器端页面自动生成                string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, directoryOfOutput);
使用NVelocity0.5实现服务器端页面自动生成                string fileName = Path.Combine(filePath, fileNameOfOutput + fileExtension);
使用NVelocity0.5实现服务器端页面自动生成
使用NVelocity0.5实现服务器端页面自动生成                DirectoryInfo dir = new DirectoryInfo(filePath);
使用NVelocity0.5实现服务器端页面自动生成                if (!dir.Exists)
使用NVelocity0.5实现服务器端页面自动生成                {
使用NVelocity0.5实现服务器端页面自动生成                    dir.Create();
使用NVelocity0.5实现服务器端页面自动生成                }

使用NVelocity0.5实现服务器端页面自动生成                
使用NVelocity0.5实现服务器端页面自动生成                log.Debug(string.Format("Class file output path:{0}", fileName));
使用NVelocity0.5实现服务器端页面自动生成                using (StreamWriter writer = new StreamWriter(fileName, false))
使用NVelocity0.5实现服务器端页面自动生成                {
使用NVelocity0.5实现服务器端页面自动生成                    fileEngine.Process(context, writer, this.templateFile);
使用NVelocity0.5实现服务器端页面自动生成                }

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

使用NVelocity0.5实现服务器端页面自动生成        }
5、界面层生成页面
使用NVelocity0.5实现服务器端页面自动生成            string template = "page.htm";
使用NVelocity0.5实现服务器端页面自动生成            try
使用NVelocity0.5实现服务器端页面自动生成            {
使用NVelocity0.5实现服务器端页面自动生成                HelperClassAdapter helper = new HelperClassAdapter(template, false);
使用NVelocity0.5实现服务器端页面自动生成                helper.Execute();
使用NVelocity0.5实现服务器端页面自动生成                Response.Write("<script>alert('生成成功');</script>");
使用NVelocity0.5实现服务器端页面自动生成            }

使用NVelocity0.5实现服务器端页面自动生成            catch(Exception ex)
使用NVelocity0.5实现服务器端页面自动生成            {
使用NVelocity0.5实现服务器端页面自动生成                Helper.ShowError(this, ex, false);
使用NVelocity0.5实现服务器端页面自动生成                return;
使用NVelocity0.5实现服务器端页面自动生成            }
页面生成就可以了,具体做法自己琢磨就可以了。
页面模板文件
使用NVelocity0.5实现服务器端页面自动生成<HTML>
使用NVelocity0.5实现服务器端页面自动生成<HEAD>
使用NVelocity0.5实现服务器端页面自动生成<TITLE>$title</TITLE>
使用NVelocity0.5实现服务器端页面自动生成<META http-equiv=Content-Type content="text/html; charset=UTF-8">
使用NVelocity0.5实现服务器端页面自动生成<META content="$title" name=description>
使用NVelocity0.5实现服务器端页面自动生成<META content="$title" name=keywords>
使用NVelocity0.5实现服务器端页面自动生成    </HEAD>
使用NVelocity0.5实现服务器端页面自动生成    <BODY>
使用NVelocity0.5实现服务器端页面自动生成      <strong class="style3">$title</strong></h2>
使用NVelocity0.5实现服务器端页面自动生成      <div> $content </div>
使用NVelocity0.5实现服务器端页面自动生成      <hr width="98%"/>
使用NVelocity0.5实现服务器端页面自动生成      <div align="right">$datetime</div>
使用NVelocity0.5实现服务器端页面自动生成    </BODY>
使用NVelocity0.5实现服务器端页面自动生成</HTML>
本文转自博客园伍华聪的博客,原文链接:使用NVelocity0.5实现服务器端页面自动生成,如需转载请自行联系原博主。


上一篇:使用Process Explorer工具分析Visual Studio 2013编译和调试产生的进程


下一篇:Word Capitalization