欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot整合Freemarker的實現(xiàn)詳細過程

 更新時間:2020年12月20日 11:50:26   作者:sinJack  
這篇文章主要介紹了Springboot整合Freemarker的實現(xiàn)詳細過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

基本配置、測試

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("\\|");
    //通過模板生成商品靜態(tài)頁面
    try {
      //獲取商品詳情的模板對象
      Template template = configuration.getTemplate("goodsItem.ftl");
      //準備商品數(shù)據(jù)
      Map<String,Object> map=new HashMap<>();
      map.put("goods",goods);
      map.put("context",request.getContextPath());
      //freemarker頁面沒有分割功能,所以通過后臺將圖片分割后,將圖片數(shù)組傳到后臺
      map.put("images",images);
      //生成靜態(tài)頁
      //獲得classpath路徑
      //靜態(tài)頁面的名稱必須和商品有所關(guān)聯(lián),最簡單的方式就是用商品的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的基本語法

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于Springboot整合Freemarker的實現(xiàn)詳細過程的文章就介紹到這了,更多相關(guān)Springboot整合Freemarker內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis-plus selectByMap條件查詢方式

    Mybatis-plus selectByMap條件查詢方式

    這篇文章主要介紹了Mybatis-plus selectByMap條件查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringBoot webSocket實現(xiàn)發(fā)送廣播、點對點消息和Android接收

    SpringBoot webSocket實現(xiàn)發(fā)送廣播、點對點消息和Android接收

    這篇文章主要介紹了SpringBoot webSocket實現(xiàn)發(fā)送廣播、點對點消息和Android接收,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 詳解JUnit5參數(shù)化測試的幾種方式

    詳解JUnit5參數(shù)化測試的幾種方式

    參數(shù)化測試一直是津津樂道的話題,我們都知道JMeter有四種參數(shù)化方式:用戶自定義變量、用戶參數(shù)、CSV文件、函數(shù)助手,那么JUnit5有哪些參數(shù)化測試的方式呢
    2021-07-07
  • Java集合TreeSet用法詳解

    Java集合TreeSet用法詳解

    本文詳細講解了Java集合TreeSet用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Java俄羅斯方塊小游戲

    Java俄羅斯方塊小游戲

    這篇文章主要為大家詳細介紹了Java俄羅斯方塊小游戲,實現(xiàn)了俄羅斯的經(jīng)典功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring事件監(jiān)聽機制使用和原理解析

    Spring事件監(jiān)聽機制使用和原理解析

    Spring的監(jiān)聽機制基于觀察者模式,就是就是我們所說的發(fā)布訂閱模式,這種模式可以在一定程度上實現(xiàn)代碼的解耦,本文將從原理上解析Spring事件監(jiān)聽機制,需要的朋友可以參考下
    2023-06-06
  • Java IO流體系繼承結(jié)構(gòu)圖_動力節(jié)點Java學院整理

    Java IO流體系繼承結(jié)構(gòu)圖_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java IO流體系繼承結(jié)構(gòu)圖,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • Java servlet 使用 PrintWriter 時的編碼與亂碼的示例代碼

    Java servlet 使用 PrintWriter 時的編碼與亂碼的示例代碼

    本篇文章主要介紹了Java servlet 使用 PrintWriter 時的編碼與亂碼的示例代碼,探討了 PrintWriter 的缺省編碼與普通字符流的缺省編碼的差異,具有一定的參考價值,有興趣的可以了解一下
    2017-11-11
  • 解析ConcurrentHashMap: transfer方法源碼分析(難點)

    解析ConcurrentHashMap: transfer方法源碼分析(難點)

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧
    2021-06-06
  • Junit單元測試關(guān)于@Transactional注解引起的事務(wù)回滾問題

    Junit單元測試關(guān)于@Transactional注解引起的事務(wù)回滾問題

    這篇文章主要介紹了Junit單元測試關(guān)于@Transactional注解引起的事務(wù)回滾問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論