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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java使用Freemarker頁面靜態化生成的實現
- 基於javascript實現移動端輪播圖效果
- Springboot整合freemarker和相應的語法詳解
- Django url反向解析的實現
- Java爬蟲實現Jsoup利用dom方法遍歷Document對象