Asp.net动态页面静态化之初始NVelocity模板引擎

静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含“?”、“=”、“&”等特殊符号。

静态页面不能自主管理公布更新的页面,假设想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件改动(通过fso等技术例外) 常见的静态页面举例:.html扩展名的、.htm扩展名的。 注意:静态页面并不是站点上没有动画的就是静态页面。

如今我们就通过NVelocity模板引擎简单的实现一下登陆过程的动态页面静态化

首先我们须要有一个html静态页面

<html>
<head><title></title>
</head>
<body>
<strong><font>登录</font></strong><form action='Handler1.ashx'>
<input type='text' name='username' value="$username" />
<input type='password' name='password'value='$password' />
<input type='submit' value='登录' /></form>
<p> $msg</p>
</body>
</html>

我们能够发现 页面中的Value值都是以$开头的定义符 这是为了方便接下来的传值

以下我们新建一个c#一般处理程序 编写代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NVelocity.Runtime;
using NVelocity;
using NVelocity.App; namespace czbk
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
string username = context.Request["username"];
string password = context.Request["password"];
if (string.IsNullOrEmpty(username) && string.IsNullOrEmpty(password))
{
VelocityEngine vltEngine = new VelocityEngine();//初始化VelocityEngine引擎
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");//模板文件位于文件系统中
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
System.Web.Hosting.HostingEnvironment.MapPath("~/"));//模板文件所在的目录 MapPathserver端路径 映射为物理路径
//'~/'位于项目根文件下
vltEngine.Init();//实例对象初始化
VelocityContext vltContext = new VelocityContext();//创建一个上下文对象
// vltContext.Put("data", data);//设置參数。在模板中能够通过$data来引用
vltContext.Put("username", "");
vltContext.Put("password", "");
vltContext.Put("msg", "");
Template vltTemplate = vltEngine.GetTemplate("login.html");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
string html = vltWriter.GetStringBuilder().ToString();
context.Response.Write(html);
}
else
{
if (username == "admin" && password == "123")
{
VelocityEngine vltEngine = new VelocityEngine();//初始化VelocityEngine引擎
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");//模板文件位于文件系统中
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
System.Web.Hosting.HostingEnvironment.MapPath("~/"));//模板文件所在的目录 MapPathserver端路径 映射为物理路径
//'~/'位于项目根文件下
vltEngine.Init();//实例对象初始化
VelocityContext vltContext = new VelocityContext();//创建一个上下文对象
// vltContext.Put("data", data);//设置參数,在模板中能够通过$data来引用
vltContext.Put("username", username);
vltContext.Put("password", password);
vltContext.Put("msg", "登陆成功");
Template vltTemplate = vltEngine.GetTemplate("login.html");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
string html = vltWriter.GetStringBuilder().ToString();
context.Response.Write(html);
}
else
{
VelocityEngine vltEngine = new VelocityEngine();//初始化VelocityEngine引擎
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");//模板文件位于文件系统中
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
System.Web.Hosting.HostingEnvironment.MapPath("~/"));//模板文件所在的目录 MapPathserver端路径 映射为物理路径
//'~/'位于项目根文件下
vltEngine.Init();//实例对象初始化
VelocityContext vltContext = new VelocityContext();//创建一个上下文对象
// vltContext.Put("data", data);//设置參数。在模板中能够通过$data来引用
vltContext.Put("username", username);
vltContext.Put("password", password);
vltContext.Put("msg", "登陆失败");
Template vltTemplate = vltEngine.GetTemplate("login.html");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
string html = vltWriter.GetStringBuilder().ToString();
context.Response.Write(html);
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}

这样一个简单的登陆功能页面静态化就做好了

ps

一般来说一些不常常更新内容的页面就能够考虑进行静态操作。比方新闻页面,小说的章节页面,毕竟这些内容一旦公布了,就非常少会进行修改。并且能够使用CDN(CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响传输数据速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点server所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地依据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求又一次导向离用户近期的服务节点上。其目的是使用户可就近取得所需内容,解决
Internet网络拥挤的状况。提高用户訪问站点的响应速度。)技术进行加速。

  长处:

  1、利于SEO,体如今友好的URL路径和高速的訪问速度,asp.net mvc站点能够忽略URL的影响。

  2、一个字:就是快!!!静态页面訪问速度快。用户体验好。结合CDN技术、缓存和对应的架构,提速效果更加明显!

  3、相比动态页面一定程度上减轻server压力

  缺点:

  1、可能须要使用大量硬盘空间

  2、添加站点开发复杂度。不利于程序维护和管理。

  3、不太灵活,静态化操作是须要触发开关的,不可能频繁的进行操作,可能导致数据更新慢,须要进行对应的设计。

Asp.net动态页面静态化之初始NVelocity模板引擎的更多相关文章

  1. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  2. ASP.NET MVC 页面静态化操作的思路

    本文主要讲述了在asp.net mvc中,页面静态化的几种思路和方法.对于网站来说,生成纯html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能.在asp.net mvc中,视图的 ...

  3. Asp.Net MVC页面静态化功能实现二:用递归算法来实现

    上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net ...

  4. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter

    上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...

  5. Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter

    由于公司现在所采用的是一套CMS内容管理系统的框架,所以最近项目中有一个需求提到要求实现页面静态化的功能.在网上查询了一些资料和文献,最后采用的是小尾鱼的池塘提供的 利用ResultFilter实现a ...

  6. 利用ResultFilter实现asp.net mvc 页面静态化

    为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...

  7. 利用ResultFilter实现asp.net mvc3 页面静态化

    为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...

  8. C#.NET动态页面静态化生成

    一,动态页面生成静态也的思路是怎样呢? 1>首先我们都是需要有一个静态模板,这模板的作用就是静态页的最基本模板,如下代码: <!DOCTYPE HTML PUBLIC "-//W ...

  9. JavaWeb页面静态化之使用freemarker模板生成一个html静态页面

    题外话:       页面静态化(展示数据从JSP页面变成HTML页面)实现方式-->模板技术   从本质上来讲,模板技术是一个占位符动态替换技术.一个完整的模板技术需要四个元素:①模板语言(使 ...

随机推荐

  1. MySQL List分区(三)

    具体介绍请看   MySQL分区一 样例:该样例为本人个人学习总结分享

  2. kentico中的page template的使用

    父页面使用自己的template 子页面,也使用自己的template. 然后父页面中需要添加一个place holder. 子页面的继承,选择inherit only master page. 这样 ...

  3. Swift EventKit的初学者指南–请求权限

    EventKit为获取和操作用户日历事件和提醒提供了一系列的类.在下面的教程中,我的目标是带领你走出利用EventKit建立一个应用程序的第.我的目标是带领你迈出利用EventKit建立一个应用程序的 ...

  4. DNS查询报文实例

    2.2 DNS查询报文实例 以www.baidu.com为例,用Wireshark俘获分组,结合2.1的理论内容,很容易看明白的,DNS请求报文如下: 图7 DNS请求报文示例 2.3 DNS回答报文 ...

  5. php的异步并行扩展swoole

    Swoole是PHP的异步并行扩展,有点像Node.js,但swoole既支持同步又支持异步,比node更强大.Swoole扩展是基于epoll高性能事件轮询,并且是多线程的,性能非常好. Swool ...

  6. linux的chmod,chown命令 详解

    指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案 ...

  7. SQL Server 从字符串中提取中文、英文、数字

    --[提取中文] IF OBJECT_ID('dbo.fun_getCN') IS NOT NULL DROP FUNCTION dbo.fun_getCN GO create function db ...

  8. View的呈现(二)加载流程

    这块涉及到Code+Razor模板=>html[output流] 而这块的问题在于Razor最后生成了什么?--对象:一个类文件:eg:index.cshtml  => index_cst ...

  9. SVG实现波浪效果

    SVG实现波浪效果 svg path:C 贝塞尔曲线绘制波浪形状   A 绘制圆弧形 svg animate:制作波浪动画,为了波浪动画效果自然,设置values关键点  attributeName: ...

  10. Tomcat配置自签名https

    从JDK中找到keytool.exe,随便复制到一个方便的目录,在命令行中进入这个目录. 第一步:为服务器生成证书 tomcat.keystore,命令中如果是IP方式访问用-ext SAN=ip:1 ...