Asp.net动态页面静态化之初始NVelocity模板引擎
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模板引擎的更多相关文章
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- ASP.NET MVC 页面静态化操作的思路
本文主要讲述了在asp.net mvc中,页面静态化的几种思路和方法.对于网站来说,生成纯html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能.在asp.net mvc中,视图的 ...
- Asp.Net MVC页面静态化功能实现二:用递归算法来实现
上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net ...
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter
上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter
由于公司现在所采用的是一套CMS内容管理系统的框架,所以最近项目中有一个需求提到要求实现页面静态化的功能.在网上查询了一些资料和文献,最后采用的是小尾鱼的池塘提供的 利用ResultFilter实现a ...
- 利用ResultFilter实现asp.net mvc 页面静态化
为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...
- 利用ResultFilter实现asp.net mvc3 页面静态化
为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...
- C#.NET动态页面静态化生成
一,动态页面生成静态也的思路是怎样呢? 1>首先我们都是需要有一个静态模板,这模板的作用就是静态页的最基本模板,如下代码: <!DOCTYPE HTML PUBLIC "-//W ...
- JavaWeb页面静态化之使用freemarker模板生成一个html静态页面
题外话: 页面静态化(展示数据从JSP页面变成HTML页面)实现方式-->模板技术 从本质上来讲,模板技术是一个占位符动态替换技术.一个完整的模板技术需要四个元素:①模板语言(使 ...
随机推荐
- EasyUI----动态拼接EasyUI控件
近期在做的项目中.依据查询到的数据,然后动态的拼接easyUI的控件显示到界面上. 在数据库中,有一个命令的表,另一个參数的表,先到命令的表中去查询这一个设备有哪些命令,比方说.摄像头有一个转动的命令 ...
- Android图文混排-实现EditText图文混合插入上传
前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的"会议详情"中.须要支持文本和图片的混合插入,下图演示输入的演示样例: 当会议 ...
- 7.matlab字符串分析
1 字符串处理函数 clc; clear all; str='My name is Robin.'; disp(str); %字符串的输出 str_size=size(str) %字符串的长度 str ...
- Git 学习笔记(三)
我记得最初学习的时候我提到了使用版本控制软件的最大好处是让你可以永远后悔,那么如何吃后悔药呢?在项目过程中我们很有可能因为各种因素对我们的操作进行回滚,对于传统的版本控制系统来说,并不复杂,拿 SVN ...
- QT-简介
前言:Qt是一款强大的跨平台gui(图形界面开发)开发工具. 一.安装说明 Qt安装包: qt-opensource-windows-x86-mingw492-5.6.1-1.exe -------- ...
- RecyclerView的刷新和加载更多
1.RecyclerView :出现也不知道多久了,没怎么使用过,上次写的笔记乱七八糟的,再次仔细的整理下. 使用需加入依赖 compile 'com.android.support:recyc ...
- 2015 Objective-C 新特性
Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时,也有很多像我一样工作上依然 ...
- Unity 点击屏幕发射射线 代码
1,创建一根射线 2,检查射线与其他物体的碰撞,得到碰撞信息 3,通过碰撞信息对碰撞到的物体进行处理 using System.Collections; using System.Collection ...
- nginx上搭建https
nginx上配置https的条件: 1.SSL证书和服务器私钥文件 2.nginx支持SSL模块 一.获取SSL证书 网上有提供权威认证的SSL证书的网站,但多数是收费的,而且不便宜.在正式的生产环境 ...
- css3背景渐变以及图片混合渲染模式(二)
http://avnpc.com/pages/photoshop-layer-blending-algorithm http://www.html5cn.org/forum.php?mod=viewt ...