国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

java  Freemarker頁面靜態(tài)化實(shí)例詳解

2020-07-27 21:23:51
字體:
供稿:網(wǎng)友

Freemarker

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

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

Freemarker 語法

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

引入頁面

將另一個(gè)頁面引入本頁面時(shí)可用以下命令完成

Jsp 引入頁面:

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

Freemarker 整合 spring

配置整合 Freemarker spring 配置文件:

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

創(chuàng)建模版對(duì)象

Freemarker 放入服務(wù)器:WEB-INF 文件夾下面:訪問資源文件,必須啟動(dòng)服務(wù)器。

在 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訪問

直接訪問,加載不了樣式資源,必須經(jīng)過 http 服務(wù)器,才能加載靜態(tài)資源。

此時(shí) nginx 作為 http 服務(wù)器來訪問靜態(tài)資源。

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 手游| 格尔木市| 普安县| 合川市| 麻阳| 鄂托克旗| 彰化市| 文化| 枣庄市| 日照市| 深州市| 璧山县| 连城县| 舒兰市| 兴海县| 绥德县| 巢湖市| 剑阁县| 林口县| 拉孜县| 利川市| 溧水县| 尉氏县| 涪陵区| 清镇市| 嵩明县| 蒲江县| 鄂托克前旗| 庄河市| 河北省| 平顶山市| 英山县| 奉贤区| 金昌市| 苍山县| 忻城县| 唐山市| 丹东市| 盈江县| 芦山县| 丰顺县|