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

首頁 > 編程 > JSP > 正文

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

2024-09-05 00:23:00
字體:
供稿:網(wǎng)友

Freemarker

FreeMarker 是一個用 Java 語言編寫的模板引擎,它基于模板來生成文本輸出。FreeMarker與 Web 容器無關(guān),即在 Web 運行時,它并不知道 Servlet 或 HTTP。它不僅可以用作表現(xiàn)層的實現(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核心配置對象,指定freemarker   Configuration cf = new Configuration(Configuration.getVersion());   //指定服務(wù)器模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //指定模板文件編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下面獲取模板文件對象   Template template = cf.getTemplate("hello.ftl");   //創(chuàng)建map對象,封裝模板數(shù)據(jù)   Map<String,Object> maps = new HashMap<String,Object>();   maps.put("hello", "freemarker入門案例");   //創(chuàng)建一個輸出對象,把數(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核心配置對象,指定freemark版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設(shè)置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下面取模板文件對象   Template template = cf.getTemplate("num.ftl");   //創(chuàng)建map對象,封裝模板數(shù)據(jù)   Map<String,Object> maps = new HashMap<>();   maps.put("price", 0.2);   //創(chuàng)建輸出對象,把數(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核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設(shè)置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("null.ftl");   //創(chuàng)建map對象,封裝模板數(shù)據(jù)   Map<String,Object> maps = new HashMap<>();   maps.put("username", null);   //創(chuàng)建輸出對象,把數(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表達式獲取數(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核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設(shè)置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("person.ftl");   //創(chuàng)建map對象,封裝模板數(shù)據(jù)   Map<String,Object> maps = new HashMap<>();   //創(chuàng)建person對象   Person person = new Person();   person.setUsername("張三");   person.setAge(22);   maps.put("p", person);   //創(chuàng)建輸出對象,把數(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表達式獲取數(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核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設(shè)置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("list.ftl");   //創(chuàng)建map對象,封裝模板數(shù)據(jù)   Map<String,Object> maps = new HashMap<>();   //創(chuàng)建list集合   List<Person> pList = new ArrayList<>();   //創(chuàng)建person對象   Person person1 = new Person();   person1.setUsername("張三");   person1.setAge(22);   //創(chuàng)建person對象   Person person2 = new Person();   person2.setUsername("李四");   person2.setAge(24);   pList.add(person1);   pList.add(person2);   maps.put("pList", pList);   //創(chuàng)建輸出對象,把數(shù)據(jù)輸出到html頁面   Writer out = new FileWriter(new File("F://template//out//list.html"));   //生成html頁面   template.process(maps, out);   //關(guān)閉資源   out.close();  }  /**   * 使用模板語法處理時間類型數(shù)據(jù)   * 獲取數(shù)據(jù)日期:${today?date}   * 獲取數(shù)據(jù)時間:${today?time}   * 獲取數(shù)據(jù)日期時間:${today?datetime}   * 獲取數(shù)據(jù)日期時間格式化:${today?string('yyyy-MM-dd')}   * @throws Exception    */  @Test  public void test6() throws Exception{   //創(chuàng)建freemark核心配置對象,指定freemarker版本   Configuration cf = new Configuration(Configuration.getVersion());   //指定模板文件所在路徑   cf.setDirectoryForTemplateLoading(new File("F://template"));   //設(shè)置模板編碼   cf.setDefaultEncoding("utf-8");   //從模板文件路徑下獲取模板文件對象   Template template = cf.getTemplate("date.ftl");   //創(chuàng)建map對象,封裝模板數(shù)據(jù)   Map<String,Object> maps = new HashMap<>();   maps.put("today", new Date());   //創(chuàng)建輸出對象,把數(shù)據(jù)輸出到html頁面   Writer out = new FileWriter(new File("F://template//out//date.html"));   //生成html頁面   template.process(maps, out);   //關(guān)閉資源   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>

創(chuàng)建模版對象

Freemarker 放入服務(wù)器:WEB-INF 文件夾下面:訪問資源文件,必須啟動服務(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)資源。

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

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


注:相關(guān)教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 元谋县| 霍山县| 奉贤区| 武强县| 宁乡县| 康平县| 定结县| 双城市| 比如县| 札达县| 道真| 建阳市| 若尔盖县| 隆德县| 鄂伦春自治旗| 寿宁县| 恭城| 新源县| 镇沅| 郴州市| 东阳市| 新平| 赣州市| 横山县| 陈巴尔虎旗| 新巴尔虎左旗| 泸定县| 平罗县| 蚌埠市| 清丰县| 安宁市| 渝中区| 张北县| 南开区| 贵定县| 西丰县| 达拉特旗| 宁波市| 宾阳县| 精河县| 凯里市|