Springboot整合Freemarker的实现详细过程

 更新时间:2020年12月20日 11:50:26   作者:sinJack  
这篇文章主要介绍了Springboot整合Freemarker的实现详细过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

基本配置、测试

1、导入依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

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

在这里插入图片描述

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

在这里插入图片描述

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java使用JSCH实现SFTP文件管理

    java使用JSCH实现SFTP文件管理

    这篇文章主要为大家详细介绍了java使用JSCH实现SFTP文件管理,实现上传、下载等功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Spring Event事件通知机制解读

    Spring Event事件通知机制解读

    这篇文章主要介绍了Spring Event事件通知机制解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • java实现学生管理系统(面向对象)

    java实现学生管理系统(面向对象)

    这篇文章主要为大家详细介绍了java实现学生管理系统(面向对象),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 使用java + selenium + OpenCV破解网易易盾滑动验证码的示例

    使用java + selenium + OpenCV破解网易易盾滑动验证码的示例

    这篇文章主要介绍了使用java + selenium + OpenCV破解网易易盾滑动验证码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Springboot实现多文件上传代码解析

    Springboot实现多文件上传代码解析

    这篇文章主要介绍了Springboot实现多文件上传代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Elasticsearch配置文件示例示范

    Elasticsearch配置文件示例示范

    这篇文章主要为大家介绍了Elasticsearch配置文件的示例示范,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • jetty运行时无法保存文件的解决方法

    jetty运行时无法保存文件的解决方法

    这篇文章主要为大家详细介绍了jetty运行时无法保存文件的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java POI导出Excel时合并单元格没有边框的问题解决

    Java POI导出Excel时合并单元格没有边框的问题解决

    这篇文章主要给大家介绍了关于Java POI导出Excel时合并单元格没有边框的问题解决办法,文中通过代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友可以参考下
    2023-07-07
  • 浅谈Java并发中ReentrantLock锁应该怎么用

    浅谈Java并发中ReentrantLock锁应该怎么用

    本文主要介绍了ava并发中ReentrantLock锁的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java 线程的生命周期详细介绍及实例代码

    Java 线程的生命周期详细介绍及实例代码

    这篇文章主要介绍了Java 线程的生命周期的相关资料,并附简单实例代码,帮助大家理解,需要的朋友可以参考下
    2016-10-10

最新评论