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. 原型相关的知识点-new的实现原理

    let obj = {}let fn = function(){ this.content = 'zhangsan'} let fn2 = new fn() fn2是fn实例化出来的一个对象,要了解n ...

  2. Oracle笔记(四) 简单查询、限定查询、数据的排序

    一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统.ANSI(美国国家标准学会) ...

  3. zabbix 自定义Key (六)

    1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/usr/local/zabbix_agent/etc/zabbix_agentd.conf) ### ...

  4. elk快速入门-filebeat

    filebeatFilebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到e ...

  5. Python爬虫进阶之Scrapy框架安装配置

    Python爬虫进阶之Scrapy框架安装配置 初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此 ...

  6. python+Appium自动化:记录遇到的坑

    1.打开 uiautomatorviewer同步的的时候突然报错 Error while obtaining UI hierarchy XML file: com.android.ddmlib.Syn ...

  7. Json中相关注解解释说明

    @JsonProperty用法: @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty(“nam ...

  8. 题解 小B的询问

    题面 解析 这就是道莫队模板啊啊!! 因此,似乎并没有什么好讲的. 莫队算法传送门 我们只需要将询问存下来, 离线处理就行了. 还是上代码吧: #include<bits/stdc++.h> ...

  9. input框输入手机号码分隔显示

    在input框输入手机号码时,自动加入空格按照3,4,4位显示,如: 实现方法如下: <label>手机号码</label><input type="text& ...

  10. jquery bind()方法 语法

    jquery bind()方法 语法 作用:bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. 说明:规定向被选元素添加的一个或多个事件处理程序,以及当事件发生时运行 ...