静态化-VeloCity
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的更多相关文章
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- 网页静态化技术--Freemarker入门
网页静态化技术:为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又 ...
- 各种系统性能优化技术,采用vilocity实现商品页面静态化
1.大型门户网站系统:>10万的访问量 行业网站(当当网,卓越网):20万-30万,一个小时内会跟数据库的交互至少20万-30万,会产生数据库瓶颈,每个数据库都有一个最大连接数(socket ...
- Day13_商品详情及静态化
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...
- 利用PHP的ob函数实现生成静态化页面
之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静 ...
- 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)
本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...
- 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)
网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...
- 页面静态化技术Freemarker技术的介绍及使用实例.
一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...
- JSP页面静态化
Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...
随机推荐
- Sublime Text 3:自定义语法高亮
(http://ilkinulas.github.io/programming/2016/02/05/sublime-text-syntax-highlighting.html) 要安装"P ...
- mybatis报错,There is no getter for property named 'templateName' in 'class
There is no getter for property named 'templateName' in 'class 主要原因是因为mapper.xml 的语句有错误,导致在bean里找不到相 ...
- Windows地址栏的妙用
主角: 它就是windows自带的一个小工具->地址栏,可以通过在任务栏右键选择工具栏-地址栏添加使用. 妙用: 一.打开文件 使用方法:D:\Temp(文件路径) 小提示:快速进入回收站:Re ...
- sql 批量触发器
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO ALTER TRIGGER [dbo].[tr_insert_update_delete_sscode] O ...
- sql DATEDIFF 函数
sql DATEDIFF 函数 今天的所有数据: 昨天的所有数据: 7天内的所有数据: 30天内的所有数据: 半个月的所有数据: 本月的所有数据: 上月的所有数据: 本年的所有数据: --查询今天是 ...
- Makefile 编译静态库文件及链接静态库
本文为原创文章,转载需指明该文链接 1.代码目录结构如下: comm/ comm/inc/apue.h 3 atexit.c Makefile 5 staticlib/lib/ staticlib ...
- Python爬虫解析htm时lxml的HtmlElement对象获取和设置inner html方法
Python的lxml是一个相当强悍的解析html.XML的模块,最新版本支持的python版本从2.6到3.6,是写爬虫的必备利器.它基于C语言库libxml2 和 libxslt,进行了Pytho ...
- 【TCP】拥塞控制
TCP拥塞控制 出现拥塞 ∑对资源的需求 > ∑可用资源 拥塞控制是防止过多的数据注入到网络中,使网络中的路由器或链路不过载,这是一个全局性的. 流量控制是点对点的通信量的控 ...
- [ZOJ 3063] Draw Something Cheat
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4706 思路:字符串是一个集合(由0到多个A~Z字符组成),我们可以假 ...
- 中国剩余定理(crt)和扩展中国剩余定理(excrt)
数论守门员二号 =.= 中国剩余定理: 1.一次同余方程组: 一次同余方程组是指形如x≡ai(mod mi) (i=1,2,…,k)的同余方程构成的组 中国剩余定理的主要用途是解一次同余方程组,其中m ...