1.在spring.xml中配置

     <!-- 指定vm模版路径 start  -->
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="/WEB-INF/"/>
<property name="preferFileSystemAccess" value="true"/>
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
<prop key="default.contentType">text/html;charset=UTF-8</prop>
</props>
</property>
</bean>
<!-- 指定vm模版路径 end -->

2.java方法


@Autowired
@Qualifier("velocityEngine")
private VelocityEngine velocityEngine;

@RequestMapping(value = "/vm", method = RequestMethod.GET)

     public void createHeader(HttpServletRequest request, HttpServletResponse response, String type) throws Exception {
try {
// 静态页生成路径
String path1 = request.getSession().getServletContext().getRealPath("/") + "index/template/include/";
createPath(path1);
String path = path1+"header.jsp";
// css路径
String csspath = getPath(request);
//velocityEngine.setProperty("resourceLoaderPath", "/WEB-INF/velocity/");
Template tl = velocityEngine.getTemplate("./index.vm", "UTF-8");
VelocityContext vc = new VelocityContext();
//数据封装start
vc.put("csspath", csspath);
vc.put("tag", 12);
vc.put("isnull", "");
vc.put("bool", false);
List l=new ArrayList();
l.add("a");
l.add("b");
l.add("c");
l.add("d");
l.add("e");
vc.put("list", l);
SysNew s = new SysNew();
s.setContents("contents");
s.setEvents("eve");
vc.put("sys", s);
//数据封装end
vc.put("charset","<%@ page language='java' import='java.util.*' pageEncoding='UTF-8'%>");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"));
tl.merge(vc, bw); //直接生成html代码不生成--发模版邮件使用star
//StringWriter sw = new StringWriter();
//tl.merge(vc, sw);
//response.getWriter().print(sw.toString());
//直接生成html代码不生成--发模版邮件使用end
bw.close(); } catch (Exception e) {
System.out.println(e.getMessage() + "-----------------------");
}
}

3.在WEB-INF下创建模版index.vm,内容如下,我整理了常用的标签在模版中

$charset##去掉这个当前页面中文乱码
.变量的调用,后台存入“csspath”,前台
$csspath</br>${csspath}<br />
.if判断</br>
#if($tag == )
等于1
#else
不等于1
#end
<br/>
.判断是否为空<br/>
#if($isnull)
变量为空
#else
变量不为空
#end
<br/>
.判断true OR false <br/>
#if($bool)
true
#else
false
#end
<br/>
.注释:两个“#”注释单行,“#**#”注释代码块
<br/>
.循环<br/>
#foreach($lis in $list)
$lis -- $velocityCount ##当前循环下标
#end
<br/>
.定义变量
#set ($bianliang="bianliang")
$bianliang
<br/>
.调用对象中的值,和jsp中类似<br>
$sys.events
$sys.Contents
<br/>
.引用模版<br/>
主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。
如:##parse("/blog/top.html")或#include("/blog/top.html")
parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样显示。
##inclue("模板文件名")或#parse("模板文件名")
<br/>

4.引用jar

velocity-1.7.jar

静态化-VeloCity的更多相关文章

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

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

  2. 网页静态化技术--Freemarker入门

    网页静态化技术:为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又 ...

  3. 各种系统性能优化技术,采用vilocity实现商品页面静态化

    1.大型门户网站系统:>10万的访问量   行业网站(当当网,卓越网):20万-30万,一个小时内会跟数据库的交互至少20万-30万,会产生数据库瓶颈,每个数据库都有一个最大连接数(socket ...

  4. Day13_商品详情及静态化

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  5. 利用PHP的ob函数实现生成静态化页面

    之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静 ...

  6. 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)

    本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...

  7. 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  8. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  9. JSP页面静态化

    Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...

随机推荐

  1. easyui-datagrid 编辑模式详解——combobox

    用于列表显示号了,需要改动某一列的值,而且根据每一行的数据去加载data数据,放在这个列中供别人选择 //-------------------- 代码可变区//---------- 数据定义区var ...

  2. 数据集:Introduction to Econometrics by Stock&Watson

    James H. Stock and Mark W. Watson, Introduction to Econometrics: data sets 詹姆斯·H·斯托克 马克·W·沃森. 计量经济学. ...

  3. JavaJDBC【四、存储过程的使用】

    Mysql还没学到存储过程,不过语法比较简单 此处不深究数据库中的存储过程怎么创建,后面在mysql的学习笔记里再做整理 今天只整理java中如何调用存储过程 语句 CallableStatement ...

  4. 2019-11-29-解决从旧格式的-csproj-迁移到新格式的-csproj-格式-AssemblyInfo-文件值重复问题...

    title author date CreateTime categories 解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题 lindex ...

  5. DataGrip导出查询结果数据

    1 按钮 2 选择保存位置即可

  6. yocto 编译C程序

    1. 找到编译器位置所在(相关设置参考/opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi文件) poky安装在 ...

  7. textwrap:格式化文本段落

    介绍 需要美观打印(pretty-printing)的情况下,可以使用textwrap模块格式化要输出的文本. 它提供了很多文本编辑器和字符处理器中都有的段落自动换行或填充特性 填充段落 import ...

  8. Git 简要教程

    Git是一个管理系统,管理版本,管理内容(CMS),管理工作等. Git主要还是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 工作流程是这样的: 克隆 Git 资源作为工作目录 ...

  9. Lambda方法推导(method references)

    在上一篇[http://www.cnblogs.com/webor2006/p/7707281.html]中提到了方法推导的东东: 这里说细的学习一下它,下面走起! Method references ...

  10. ajax 向php发送请求

    <html> <head> <script src="clienthint.js"></script> </head> ...