静态化-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. 没听说过静态 ...
随机推荐
- java 常用日期工具类的操作
获取指定日期的时间戳 /* * 获取指定日期的时间戳 * */ public static long getMillis(String date_str){ try { SimpleDateForma ...
- Nginx如何配置防盗链
配置要点 none : 允许没有http_refer的请求访问资源: blocked : 允许不是http://开头的,不带协议的请求访问资源: 119.28.190.215 start.igrow. ...
- webpack初体验_集成插件_集成loader
webpack初体验 如果没装 webpack 就先装一下,命令行输入npm i webpack -g 新建一个项目 创建一个空的项目 定义一个名称 创建一个Module 选择静态 web 输入名称 ...
- C#中构建多线程应用程序[转]
原文:http://blog.sina.com.cn/s/blog_4e61c4290100ndyl.html C#中构建多线程应用程序[转] (2011-01-04 21:29:29) 转载▼ 标签 ...
- [转] TextCNN调参技巧
原文地址: https://plushunter.github.io/2018/02/26/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86 ...
- IPC之mqueue.c源码解读
队列的意思应该大家都清楚,不过还有有一些细节的地方不知道,下面是一个队列的源码,因该说这是队列的一部分,不是全部.而且是linux中队列,其他各种OS中队列大同小异. /* * POSIX messa ...
- kubernetes之NFS动态提供Kubernetes后端存储卷
StorageClass作为对存储资源的抽象定义, 对用户设置的NFS申请屏蔽后端存储的细节, 一方面减少了用户对于存储资源细节的关注, 另一方面减轻了管理员手工管理pv的工作, 由系统自动完成pv的 ...
- windows 快捷键收集
1. 放大镜 windows徽标 + "+“ 2. 直接显示桌面 windows徽标 + D 3. 收起所有窗口 windows徽标 + M 4. 浏览器中恢复之前关闭的页面 Ctrl + ...
- Beta冲刺版本第二天
该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求地址:https://edu.cnblogs.com ...
- mongodb单机搭建
参考网站:http://www.runoob.com/mongodb/mongodb-linux-install.html 1.下载 https://www.mongodb.com/download- ...