欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Springboot整合Freemarker的实现详细过程

程序员文章站 2022-03-31 14:33:37
基本配置、测试1、导入依赖 org.springframework.boot

基本配置、测试

1、导入依赖

<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-freemarker</artifactid>
</dependency>

2、准备一个freemarker模板(.ftl)

Springboot整合Freemarker的实现详细过程

3、注入configuration对象(freemarker.template包下)

Springboot整合Freemarker的实现详细过程

4、生成商品详情模板

@controller
@requestmapping("/gooditem")
public class gooditemcontroller {
  @reference
  private igoodsservice goodsservice;

  @autowired
  private configuration configuration;

  @requestmapping("/createhtml")
  @responsebody
  public string createhtml(int gid, httpservletrequest request){
    //通过商品id获取商品详情信息
    goods goods = goodsservice.querybyid(gid);
    string [] images=goods.getgimage().split("\\|");
    //通过模板生成商品静态页面
    try {
      //获取商品详情的模板对象
      template template = configuration.gettemplate("goodsitem.ftl");
      //准备商品数据
      map<string,object> map=new hashmap<>();
      map.put("goods",goods);
      map.put("context",request.getcontextpath());
      //freemarker页面没有分割功能,所以通过后台将图片分割后,将图片数组传到后台
      map.put("images",images);
      //生成静态页
      //获得classpath路径
      //静态页面的名称必须和商品有所关联,最简单的方式就是用商品的id作为页面的名字
      string path = this.getclass().getresource("/static/page/").getpath()+goods.getid()+".html";;
      template.process(map,new filewriter(path));
    } catch (exception e) {
      e.printstacktrace();
    }
    return "";
  }
}

注意:
1、freemarker页面不能通过<base th:href="${#request.getcontextpath()+'/'}" rel="external nofollow" >获得项目的根路径。
因此可从后台将根路径传到前端,然后通过<base href="${context}/" rel="external nofollow" />获取。
2、当page是一个空文件夹的时候,会报错。这是因为maven项目不会对空文件夹进行打包编译。

freemarker的基本语法

Springboot整合Freemarker的实现详细过程

Springboot整合Freemarker的实现详细过程

到此这篇关于springboot整合freemarker的实现详细过程的文章就介绍到这了,更多相关springboot整合freemarker内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!