前言:
在在看视频学习电商网站的开发时,由于考虑到电商的前台,商品详情页届时将受到较大的访问量,若任然用jsp写,将给服务器带来很大的压力,故采用freemarker进行页面的静态化,在后台商品上架时,采用页面freemarker,生成商品的静态页。
1、写freemarker生成静态页的service接口及实现类。并将其在spring中进行注册(可采用注解@Service或者在spring的xml文件中进行注册)。实现类暂命名为StaticPageServiceImpl。
2、StaticPageServiceImpl拥有Configuration类的属性conf,可从org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer类的对象中获取;
conf=freeMarkerConfigurer.getConfiguration();
3、重点来啦,要重写接口的生成静态页的方法productIndex(),需要参数1、Map<String,Object> map(map为需要在静态页里生成的数据),2、Integer productId(productId为本次学习视频里,生成商品的id,便于辨识生成的商品静态页)。
第一步:创建输出流 writer out =null;
第二步:读取模板文件 Template template = conf.getTemplate("模板文件名字"),注:一般将模板文件路径在FreeMarkerConfigurer的templateLoaderPath属性中设置;
第三步: 获取输出html至哪个位置的路径
String path =this.getPath("/html/product/"+productId+".html");
第四步:创建生成的静态文件 File f = new File(path);
第五步:判断生成的静态文件的父类文件是否存在,不存在就创建此文件
if(!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}
第六步:给声明的输出流创建对象,指定文件输出流及其编码格式 out = new OutputStreamWriter(new FileOutputStream(f), "UTF-8");
第七步:使用生成的模板文件,读取打印要输入的数据对象映射Map<String,Object> root和输出流out:
template.process(root, out);
期间抛出或处理异常。
第八步:在controller中引用StaticPageService接口,如在商品确认上架后的上架controller方法中调用此方法,生成静态页。
共同学习,写下你的评论
评论加载中...
作者其他优质文章