一.初识Freemarker
什么是Freemarker
Freemarker是一款模版引擎
Freemarker不是web框架
Freemarker官网http://http://freemarker.org
动态网页(数据可变)与静态网页(访问快,SEO排名高)
动态网页静态代(伪静态[只改后缀],真静态)
模板技术:数据+模板=输入文本
freemarker【ftl】,velocity【vm】
实例
使用freemarker的步骤
1.导包(freemarker是一个小框架)
2.创建一个配置对象Configuration(加个版本)
3.设置加载路径
4.设置字符集(默认)
5.创建模板(准备一个ftl模板)
6.准备数据(Map,对象)
7.数据+模板=输出文件(Writer)
----------------------------
----------------------------
动态网页静态化(添加,修改)
修改的时候需要把原生的那个静态化页面删除
删除数据的时候也要把静态化页面删除
需要把路径记录下来,才可能去找到这个静态化页面
主要代码
@RequestMapping("/save")
public String save(Jobs job, HttpServletRequest req) throws IllegalStateException, IOException, TemplateException {
// 页面存在则删除
String realPath = req.getServletContext().getRealPath("/statichtml");
String htmlurl = job.getHtmlurl();
if (htmlurl != null) {
File jobFile = new File(realPath, htmlurl);
// 判断是否存在
if (jobFile.exists()) {
System.gc();
jobFile.delete();
}
}
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
cfg.setDirectoryForTemplateLoading(new File(realPath));
cfg.setDefaultEncoding("UTF-8");
Template template = cfg.getTemplate("details.ftl");
HashMap map = new HashMap();
String uuidHtml = UUID.randomUUID().toString() + ".html";
map.put("job", job);
System.out.println(job.getRequired());
job.setHtmlurl(uuidHtml);
File newFile = new File(realPath, uuidHtml);
FileWriter out = new FileWriter(newFile);
template.process(map, out);
out.flush();
out.close();
if (job.getId() != null) {
service.update(job);
} else {
service.save(job);
}
return "redirect:/jobs/query";
}
webapp下创建一个statichtml包