NVelocity学习笔记一——linq2sql+NVelocity完整demo

(一)前言     

刚刚进入新公司,看公司的项目,发现开发流程几乎和以前的完全不同,再看看页面布局竟然没有发现html。神马情况????一番探究发现使用了NVelocity模板引擎开发的。于是乎花了半天的时间比划着公司的项目做了一个小demo,也算是熟悉一下这种开发方式吧,同时也给将要学习这方面东西的朋友留个小教程。

(二)实战     

说明:因为公司项目数据库操作使用的是linq2sql,所以我也就拿这个操作数据库了(汗,其实我也没用过linq2SQL,都是EF,其实都差不多)。

第一步:

新建解决方案ProTest,不说了。

第二步:

新建类库LinqToSql,右击类库添加LinqToSql类。如图:

第三步:

将需要的表拖放到设计器上,会自动生成一些方法。

第四步:

新建一个操作数据库的实例类。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqToSql
{
    public class DBContextFactory
    {
        public static  DBDataContext GetDBContext()
        {
            return new DBDataContext(ConfigurationManager.ConnectionStrings["school"].ConnectionString);
        }
    }
}

第五步:

新建网站,引用类库linqtosql,同时添加System.Data.Linq.dll和NVelocity.dll类库(可以在官网http://nvelocity.codeplex.com/下载)。

新建如下文件夹:

ClassView类用于取数据,Template文件夹下为静态模板。如下:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <meta name="description" content="">
 6     <meta name="keywords" content="">
 7     <title>$Title</title>
 8 </head>
 9
10 <body>
11   <table>
12     #foreach($item in $ClassView.GetList(30))
13     <tr><td>$item.Id</td><td>$item.Name</td></tr>
14     #end
15   </table>
16 </body>
17 </html>

可以看出其中标记了一些NVelocity模板引擎的语法。

第六步:

清空aspx页面中的html代码,只保留第一行声明。如图:

第七步:

在aspx.cs页面中做如下处理:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 //
 8 using Commons.Collections;
 9 using NVelocity;
10 using NVelocity.App;
11 using NVelocity.Runtime;
12 using System.Configuration;
13 using System.Runtime.Remoting.Contexts;
14 using NVelocity.Context;
15 using System.IO;
16 public partial class ClassList : System.Web.UI.Page
17 {
18     protected void Page_Load(object sender, EventArgs e)
19     {
20
21         //1.创建VelocityEngine实例对象
22         VelocityEngine engine = new VelocityEngine();
23
24         //2.读取模板路径,可以定义几套模板利于动态换肤
25         string templateRoad = ConfigurationManager.AppSettings["tmpDir"];
26
27         //3.使用设置初始化VelocityEngine
28         ExtendedProperties props = new ExtendedProperties();
29         props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
30         props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
31         props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
32         props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Server.MapPath(templateRoad));
33         engine.Init(props);
34
35         //4.模板引擎从文件中读取模板
36         Template tmp = engine.GetTemplate(@"class_tmp.vm");
37
38         //5.为模板变量赋值
39         IContext context = new VelocityContext();
40         context.Put("Title", "first nvelocity");
41         context.Put("ClassView",new ClassView());
42
43         //6.合并模板和流写出器
44         StringWriter write = new StringWriter();
45         tmp.Merge(context, write);
46         Response.Write(write.ToString());
47
48     }
49 }

第八步:

结果如下:

(三)总结

这里面的东西其实还有很多,这里我也是刚刚了解………………

NVelocity学习笔记一——linq2sql+NVelocity完整demo,布布扣,bubuko.com

时间: 2024-10-10 03:32:01

NVelocity学习笔记一——linq2sql+NVelocity完整demo的相关文章

[原创]java WEB学习笔记20:案例完整实践(part 1)---MVC架构分析

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

[原创]java WEB学习笔记21:案例完整实践(part 2)---.DAO层设计

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

Ajax学习笔记之一----------第一个Ajax Demo[转载]

原文地址: http://www.cnblogs.com/pjx412/archive/2011/05/04/2037014.html 一.核心推动力:XMLHttpRequest对象XMLHttpRequest对象在javascript 中创建并使用,客户端可以仅仅从服务器端获取它需要的信息:通过与DOM和CSS的 结合,就可以实现局部刷新的效果:同时还可以通过XMLHttpRequest对象异步提交 信息,将用户的输入在后台提交到服务器所在而无需刷新这个页面. XMLHttpRequest催

[原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

OpenCV学习笔记[3]Java Demo人脸识别

OpenCV学习笔记:Java Demo人脸识别 [简介] 我记得在很久以前,CSDN似乎搞过一个活动,给一个橘子林的照片,让程序计算相片里有多少个橘子.之所以对这个问题记忆犹新,是因为在专业学习初期,相比于排序遍历搜索等简单算法而言,"图像识别"算法一直是难以理解的东西,而我偏偏又痴迷于此,不管自己多么无知,对于令我迷惑的问题总是充满着解决的渴望. 通过对OpenCV的初步了解,我发现图像识别的很多问题都可以用它方便的解决,本次将是一个来自官方的人脸识别的实例,我们提供图像,使用内置

【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例

今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支持Azure,所以有幸学习下Azure,并在查看文档资料以及写Demo过程中发现了其中的一些不同.虽然AWS与Azure是两款旗鼓相当的竞争产品,但是还是有很多区别. 本文主要是自己学习Service Bus中的学习笔记,自己有些结论也都跟微软技术支持确认过.个人观点,抛砖引玉:-) 消息服务对于云

mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文件复制到src/main/webapp下,删掉WebContent 5.修改Deployment Assembly 6.测试 二.mybatis访问mysql 1.数据库准备 2.修改pom.xml 3.创建实体类 4.创建访问接口 5.添加映射文件 6.添加MyBatisCfg.xml配置文件,注

storm学习笔记完整记录(一)

storm有两种运行模式(本地模式和集群模式) 1. 首先创建一个类似于HelloWorld的简单程序,以便进入storm的大门,包结构如下: 2.从包结构可以知道,这是一个Maven Project,pom.xml的内容如下: <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    

DuiLib学习笔记1——编译运行demo

c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率. duilib的SVN地址:http://duilib.googlecode.com/svn/trunk 下载后运行DuiLib.sln 编译时可能会遇到几个报错. 0.开发环境本身有问题,比如用win7没有装win7sdk之类的. 1. TestApp1