使用Freemarker生成静态化页面

freemarker 静态化页面使用

一.导入freemarker依赖



    org.freemarker
    freemarker
    2.3.20


二.在webapp下定一个文件夹用于存放模板

模板的的后缀必须是.ftl

这里用作模板的地方是 职位详情页 用 el 表达式获取要替换模板的数据


		

三.生成静态化页面的工具类

package cn.ydsat.util;

import java.io.File;
import java.io.PrintWriter;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import cn.itsource.domain.Job;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class FreemarkerUtil {
	
	
	//新生成静态页面
	public static String Createhtml(Job job,HttpServletRequest req) throws Exception{
		//获取保存静态网页的文件夹的真实路径
		String realPath = req.getServletContext().getRealPath("/htmlftl");
		//创建cfg对象
		Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
		File file = new File(realPath);
		//设置模板存储地址
		cfg.setDirectoryForTemplateLoading(file);
		 //设置编码
		 cfg.setDefaultEncoding("UTF-8");
		 //准备对象  传入job时候就已经准备好了
		//获取模板
		 Template template = cfg.getTemplate("jobmodel.ftl");
		 //使用随机数 随机生成名字的html静态页面
		 String newfile = UUID.randomUUID().toString()+".html";
		 //整合模板和数据
		 PrintWriter pw = new PrintWriter(new File(file,newfile));
		 template.process(job, pw);
		 pw.close();
		return "/htmlftl/"+newfile;
	}
	
	//删除静态页面
	public static void deletehtml(Job job,HttpServletRequest req){
		//获取工作对象中的静态化字段 /htmlftl/....,html
		String htmlurl = job.getHtmlurl();
		//获取项目真实路径
		String realPath = req.getServletContext().getRealPath("");
		System.out.println(realPath);
		//路径和名字 新生成一个全新路径下文件
		File file = new File(realPath,htmlurl);
		if(file.exists()){
			file.delete();
		}
	}
	

}

四.

	//新增保存或者修改时   都要新建一个静态页面  ,修改还要将之前的静态化页面进行删除 
	@RequestMapping("/save")
	public String save(Job job,HttpServletRequest req) throws Exception{
		Integer id = job.getId();
		if (!"".equals(id) && id != null) {
			FreemarkerUtil.(job, req);//删除之前生成的静态html页面
			String newhtmlurl = FreemarkerUtil.Createhtml(job, req);//根据页面传过来的值 从新生成一个静态页面
			job.setHtmlurl(newhtmlurl);
			jobservice.edit(job);
		}else{
			//新建一个静态页面,url作为字段属性保存到数据库
			String htmlurl = FreemarkerUtil.Createhtml(job, req);
			job.setHtmlurl(htmlurl);
		jobservice.save(job);
		}
		return "....";
	}
	
		//删除   同时删除之前的静态页面
	@RequestMapping("/delete")
	public String delete(Integer id,HttpServletRequest req){
		Job job = jobservice.queryOne(id);//查询出要删除id的工作信息
		FreemarkerUtil.deletehtml(job, req);
		jobservice.delete(id);
		return "redirect:/job/queryAll";
		
	}

五.访问

由于之前将职位对象存放在了session.

职位详情

你可能感兴趣的:(使用Freemarker生成静态化页面)