亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

java Freemarker頁面靜態化實例詳解

2024-09-05 00:23:00
字體:
來源:轉載
供稿:網友

Freemarker

FreeMarker 是一個用 Java 語言編寫的模板引擎,它基于模板來生成文本輸出。FreeMarker與 Web 容器無關,即在 Web 運行時,它并不知道 Servlet 或 HTTP。它不僅可以用作表現層的實現技術,而且還可以用于生成 XML,JSP 或 Java 等。
目前企業中:主要用 Freemarker 做靜態頁面或是頁面展示

總結:freemarker 模版引擎,可以使用 Freemarker 模版生成 html 頁面。

Freemarker 語法

 /**   * freemark入門案例   * freemark三要素:   * 1.freemark API   * 2.數據   * 3.模板文件:ftl文件   * @throws Exception    */  @Test  public void test1() throws Exception{   //創建freemarker核心配置對象,指定freemarker   Configuration cf = new Configuration(Configuration.getVersion());   //指定服務器模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //指定模板文件編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下面獲取模板文件對象   Template template = cf.getTemplate("hello.ftl");   //創建map對象,封裝模板數據   Map<String,Object> maps = new HashMap<String,Object>();   maps.put("hello", "freemarker入門案例");   //創建一個輸出對象,把數據輸出daoHtml頁面   Writer out = new FileWriter(new File("F://template//out//quickstart.html"));   //生成Html頁面   template.process(maps, out);   //關閉資源   out.close();  }  /**   * freemarker模板語法處理特殊數據格式    * 例如:$0.2,20%   * 模板語法:$0.2:${price?string.currency}   * 20%:${price?string.percent}   * @throws Exception    */  @Test  public void test2() throws Exception{   //創建freemark核心配置對象,指定freemark版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下面取模板文件對象   Template template = cf.getTemplate("num.ftl");   //創建map對象,封裝模板數據   Map<String,Object> maps = new HashMap<>();   maps.put("price", 0.2);   //創建輸出對象,把數據輸出到Html頁面   Writer out = new FileWriter(new File("F://template//out//price.html"));   //生成Html頁面   template.process(maps, out);   //關閉資源   out.close();  }  /**   * 使用模板語法處理null值   * 模板文件處理語法:   * 1.?   * 語法:${username?default("張三")}   * 2.!   * 語法:   * ${username!}   * ${username!"默認值"}   * 3.if   * 語法:   * <#if username??>   * ${username}   * </#if>   * @throws Exception    */  @Test  public void test3() throws Exception{   //創建freemark核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("null.ftl");   //創建map對象,封裝模板數據   Map<String,Object> maps = new HashMap<>();   maps.put("username", null);   //創建輸出對象,把數據輸出到html頁面   Writer out = new FileWriter(new File("F://template//out//username.html"));   //生成html頁面   template.process(maps, out);   //關閉資源   out.close();  }  /**   * 使用模板語法處理pojo數據   * el表達式獲取數據:   * model.addAttribute("p",person);   * ${p.username}   * ${p.address}   * 模板語法獲取pojo數據   * model.addAttribute("p",person);   * ${p.username}   * ${p.address}   * @throws Exception    */  @Test  public void test4() throws Exception{   //創建freemark核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("person.ftl");   //創建map對象,封裝模板數據   Map<String,Object> maps = new HashMap<>();   //創建person對象   Person person = new Person();   person.setUsername("張三");   person.setAge(22);   maps.put("p", person);   //創建輸出對象,把數據輸出到html頁面   Writer out = new FileWriter(new File("F://template//out//person.html"));   //生成html頁面   template.process(maps, out);   //關閉資源   out.close();  }  /**   * 使用模板語法處理集合數據   * el表達式獲取數據:   * model.addAttribute("pList",pList);   * <c:foreach item="pList" var="p">   *  ${p.username}   *  ${p.age}   * </c:foreach>   * 模板語法獲取list數據   * model.addAttribute("pList",pList);   * <#list pList as p>   *  ${p.username}   *  ${p.age}   * </#list>   * 角標語法:${別名_index}   * @throws Exception    */  @Test  public void test5() throws Exception{   //創建freemark核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("list.ftl");   //創建map對象,封裝模板數據   Map<String,Object> maps = new HashMap<>();   //創建list集合   List<Person> pList = new ArrayList<>();   //創建person對象   Person person1 = new Person();   person1.setUsername("張三");   person1.setAge(22);   //創建person對象   Person person2 = new Person();   person2.setUsername("李四");   person2.setAge(24);   pList.add(person1);   pList.add(person2);   maps.put("pList", pList);   //創建輸出對象,把數據輸出到html頁面   Writer out = new FileWriter(new File("F://template//out//list.html"));   //生成html頁面   template.process(maps, out);   //關閉資源   out.close();  }  /**   * 使用模板語法處理時間類型數據   * 獲取數據日期:${today?date}   * 獲取數據時間:${today?time}   * 獲取數據日期時間:${today?datetime}   * 獲取數據日期時間格式化:${today?string('yyyy-MM-dd')}   * @throws Exception    */  @Test  public void test6() throws Exception{   //創建freemark核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("date.ftl");   //創建map對象,封裝模板數據   Map<String,Object> maps = new HashMap<>();   maps.put("today", new Date());   //創建輸出對象,把數據輸出到html頁面   Writer out = new FileWriter(new File("F://template//out//date.html"));   //生成html頁面   template.process(maps, out);   //關閉資源   out.close();  }

引入頁面

將另一個頁面引入本頁面時可用以下命令完成

Jsp 引入頁面:

Ftl 引入頁面:<#include “/include/head.ftl”>

Freemarker 整合 spring

配置整合 Freemarker spring 配置文件:

<!-- freemarker交給spring管理 --> <!-- 使用spring提供模板管理配置對象 --> <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  <!-- 模板路徑 -->  <property name="templateLoaderPath" value="/WEB-INF/fm/" />  <!-- 模板編碼 -->  <property name="defaultEncoding" value="utf-8" /> </bean>

創建模版對象

Freemarker 放入服務器:WEB-INF 文件夾下面:訪問資源文件,必須啟動服務器。

在 web.xml 加載 application 的 spring 配置文件:

<!-- 加載springmvc -->  <servlet>  <servlet-name>springmvc</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <init-param>   <param-name>contextConfigLocation</param-name>   <param-value>classpath:springmvc.xml,classpath:applicationContext-*.xml</param-value>  </init-param>  <load-on-startup>1</load-on-startup>  </servlet>

Nginx訪問

直接訪問,加載不了樣式資源,必須經過 http 服務器,才能加載靜態資源。

此時 nginx 作為 http 服務器來訪問靜態資源。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
麻豆国产va免费精品高清在线| 久久亚洲精品中文字幕冲田杏梨| 久久久伊人欧美| 国产精品白丝jk喷水视频一区| 91亚洲国产成人精品性色| 日韩中文字幕在线播放| 免费91在线视频| 亚洲性猛交xxxxwww| 国产啪精品视频网站| 国产精品对白刺激| 国产激情999| 亚洲天堂成人在线视频| 亚洲天堂男人天堂女人天堂| 久久人人爽人人爽人人片av高清| 久久这里有精品| 欧美重口另类videos人妖| 亚洲欧美日韩精品久久亚洲区| 日韩成人中文字幕| 亚洲一区中文字幕在线观看| 精品久久在线播放| 91久久精品视频| 亚洲资源在线看| 欧美国产精品va在线观看| 久久久久久亚洲精品| 国产日韩欧美在线观看| 国产主播欧美精品| 亚洲成人av片在线观看| 中文欧美在线视频| 亚洲在线观看视频| 精品国产欧美成人夜夜嗨| 国产精品日韩专区| 午夜精品在线观看| 亚洲精品白浆高清久久久久久| 亚洲美女久久久| 红桃av永久久久| 日韩男女性生活视频| 亚洲国产天堂网精品网站| 久久久99免费视频| 国产精品第一页在线| 欧美性猛交xxxx乱大交蜜桃| 欧美精品激情blacked18| 精品国内自产拍在线观看| xvideos亚洲人网站| 97精品一区二区视频在线观看| 欧美国产日产韩国视频| 久久国产精品影片| 欧美多人乱p欧美4p久久| 国产精品一二三视频| 亚洲视频网站在线观看| 亚洲天堂男人的天堂| 久久成人免费视频| 亚洲成人免费在线视频| 色偷偷av一区二区三区乱| 91高清免费在线观看| 亚洲乱码av中文一区二区| 欧美精品成人91久久久久久久| 亚洲黄页网在线观看| 欧美成人精品在线视频| 日韩在线中文字| 亚洲综合最新在线| 欧美大片在线免费观看| 欧美另类极品videosbestfree| 欧美性受xxx| 国产成人极品视频| 色av中文字幕一区| 日韩在线观看免费全集电视剧网站| 日本国产欧美一区二区三区| 欧美激情精品久久久久久黑人| 亚洲影视九九影院在线观看| 亚洲国产精品一区二区久| 欧美性xxxx极品高清hd直播| 国产精品女人久久久久久| 亚洲精品国产福利| 精品福利在线视频| 亚洲久久久久久久久久久| 91国内产香蕉| 一级做a爰片久久毛片美女图片| 久久男人资源视频| 在线国产精品视频| 亚洲国产精品成人va在线观看| 国模精品视频一区二区三区| 日韩在线欧美在线国产在线| 色婷婷久久一区二区| 久久久免费精品| 97av在线播放| 欧美专区福利在线| 久久久亚洲福利精品午夜| 日韩av网址在线观看| www.日韩视频| www国产亚洲精品久久网站| 国产网站欧美日韩免费精品在线观看| 亚洲精品www久久久久久广东| 538国产精品视频一区二区| 国产精品视频yy9099| 亚洲第一国产精品| 亚洲人成电影网站色xx| 亚洲精品色婷婷福利天堂| 成人看片人aa| 久久亚洲影音av资源网| 久久人人爽人人爽人人片av高清| 亚洲精品99999| 国产精品欧美日韩一区二区| 中文字幕无线精品亚洲乱码一区| 欧美一级淫片丝袜脚交| 91日本在线观看| 国产精品99久久久久久久久久久久| 欧美日韩成人在线观看| 91亚洲永久免费精品| 国产视频在线观看一区二区| 国产精品久久久av| 97色在线观看免费视频| 亚洲丁香久久久| 上原亚衣av一区二区三区| 综合136福利视频在线| 色综合久久88色综合天天看泰| 欧美日韩国产第一页| 亚洲欧洲在线看| www.亚洲男人天堂| 成人在线激情视频| 国产在线播放91| 91精品国产成人www| 日韩中文字幕免费视频| 国产成人高清激情视频在线观看| 国产在线精品一区免费香蕉| 亚洲人午夜色婷婷| 国产精品视频专区| 亚洲人成在线播放| 日韩成人性视频| 欧美日韩一区二区免费视频| 97精品视频在线观看| 国产精品久久久久久久av电影| 国产专区精品视频| 欧美日韩另类字幕中文| 这里只有精品视频| 最近2019年中文视频免费在线观看| 欧美午夜宅男影院在线观看| 97超级碰碰碰| 亚洲欧美日韩精品久久奇米色影视| 日韩欧美a级成人黄色| 欧美成人午夜影院| 亚洲国产精品美女| 疯狂蹂躏欧美一区二区精品| 欧美性xxxxx极品| xxxxxxxxx欧美| 国产精品视频网| 成人免费看吃奶视频网站| 欧美性xxxx极品高清hd直播| 日韩有码在线视频| 欧美性猛交xxxx久久久| 国产精品青青在线观看爽香蕉| 懂色av影视一区二区三区| 欧美一乱一性一交一视频| 日本久久久久久久| 国产亚洲人成a一在线v站| 国产97免费视| 一区二区三区天堂av| 久久久久99精品久久久久| 国产精品激情av电影在线观看| 欧美福利小视频| 国产欧美va欧美va香蕉在线| 欧美成人精品h版在线观看| 国产精品丝袜高跟| 欧美日韩亚洲91| 欧美野外wwwxxx|