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

首頁 > 編程 > 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表達(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核心配置對象,指定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表達(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核心配置對象,指定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ā)表
日本一区二区三区视频在线观看| 国产黄色一级大片| 俺也去精品视频在线观看| 精品视频站长推荐| 日本成人伦理电影| 作爱视频免费观看视频在线播放激情网| 久久99国产精品免费| 5g影院天天爽成人免费下载| 极品美鲍一区| 久久久久久久久久影视| 国产精品人人爽人人做我的可爱| 精品久久久久久亚洲| 中文字幕电影一区| 国产成人免费视频一区| 欧美性xxxx巨大黑人猛| 很污很黄的网站| www.夜夜爱| 色综合久久中文综合久久牛| 亚洲超碰精品一区二区| 91精品国产综合久久久蜜臀粉嫩| 韩国三级hd中文字幕有哪些| 亚洲激情免费观看| av激情成人网| 国产一区二区在线免费观看| 久久久噜噜噜久久中文字免| 亚洲欧美电影一区二区| 黄色网页在线免费观看| 欧美一区二区视频17c| 色综合久久中文| 美女精品久久| 欧美亚洲日本一区二区三区| 色视频网站在线| 伊人精品久久久久7777| 国产精品嫩草在线观看| 欧美日韩不卡一区二区| 婷婷六月综合亚洲| av女名字大全列表| 伊人网免费视频| 最新高清无码专区| 日韩精品一区国产麻豆| 国产免费一区二区三区四在线播放| 欧美无遮挡国产欧美另类| 亚洲精品一区二区三区蜜桃下载| 欧美成人精品一区二区三区在线看| 麻豆chinese极品少妇| 国产亚洲高清一区| 999人在线精品播放视频| a视频在线免费看| 香蕉久久精品日日躁夜夜躁| 香蕉国产成人午夜av影院| 免费观看日韩电影| 国产嫩草在线观看| 欧美日韩黄色影视| 亚洲成人av在线电影| 欧美亚洲日本一区二区三区| 色视频网站在线| 国产性生活一级片| 日韩成人精品视频在线观看| 亚洲不卡在线观看| 亚洲欧洲视频在线观看| 在线观看av片| 成人免费视频观看视频| 精品众筹模特私拍视频| 国产69精品久久久久久久久久| 国产精品国产三级国产在线观看| 成人网免费视频| 中文字幕在线视频一区二区| 精品亚洲成a人| brazzers欧美精品| 欧美第一黄色网| 蜜桃久久一区二区三区| 日韩人妻无码一区二区三区99| 国产999视频| 久草免费在线观看| 污污的视频免费观看| 成a人片在线观看www视频| c#hpsocket| 寂寞少妇一区二区三区| 青青草中文字幕| 国产绿帽一区二区三区| 视频在线观看你懂的| 亚洲美女中文字幕| 亚洲视频在线免费| 青青草97国产精品免费观看| 三级全黄做爰视频| 伊人精品久久久久7777| 久久精品国产一区| 一本色道久久88综合日韩精品| caoporn97免费视频公开| 六十路息与子猛烈交尾| 亚洲精品国产熟女久久久| www日韩视频| 久久99国产精品久久99果冻传媒| 成熟老妇女视频| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲电影一区二区三区| 国产91成人在在线播放| 国产精品无码午夜福利| 久久久久久久久亚洲| 天堂av中文在线观看| 中文字幕一区二区三区域| 狠狠噜天天噜日日噜| 中国大陆高清aⅴ毛片| av免费观看网站| 久久久久久久午夜| 欧美不卡在线| 亚洲乱码在线| 国产91福利| 啪啪免费网站| 亚洲天堂福利av| 欧美aa免费在线| 日韩成人av电影| 95精品视频在线| 亚洲国产欧美一区二区丝袜黑人| 岛国在线视频网站| 蜜臀a∨国产成人精品| 成人国产精品一级毛片视频| 老司机午夜免费福利| 国产尤物久久久| 国产又色又爽又高潮免费| 国产成人无码精品久在线观看| 免费看黄网站在线观看| 精品99一区二区三区| 中文字幕在线观| 性亚洲最疯狂xxxx高清| 国内精品一区二区三区四区| 美女又黄又免费| 日韩三级毛片| 欧美日韩精品一区二区三区在线观看| 国产一区二区三区在线免费| 青柠在线影院观看日本| 美女视频网站在线观看| 99久久免费精品高清特色大片| 97国产精品视频| 国内高清免费在线视频| 美女mm1313爽爽久久久蜜臀| 精品白丝av| 精品久久久久久久一区二区蜜臀| 日韩欧美综合视频| 久久久久亚洲av片无码v| 亚洲精品国精品久久99热一| aⅴ在线免费观看| 精品人妻无码一区二区色欲产成人| 欧美一区二区在线视频| 日韩欧美在线观看强乱免费| 男人的天堂成人在线| 日韩国产欧美| 日本黄区免费视频观看| 久国产精品视频| 亚洲一区中文字幕永久在线| 中文字幕亚洲影院| 国产精品素人一区二区| 国产在线久久久| 国内精品偷拍| 日本不卡一区二区三区视频| 超碰caoporn久久| 噼里啪啦国语在线观看免费版高清版| 亚洲三级在线免费| 色内内免费视频播放| 免费拍拍拍网站| 在线观看精品一区| 亚州色图欧美色图| 日日噜噜噜噜夜夜爽亚洲精品| 免播放器亚洲一区| 国产大学生自拍视频| 国产资源一区| 亚洲第一视频区| 洋洋成人永久网站入口| 日韩人妻一区二区三区| 亚洲国产另类久久久精品极度| 日韩三级电影网址| 区一区二日本| 中国特级黄色片| 成人爽a毛片| 国产一区二区三区四区| 国产一区二区三区在线视频观看| 亚洲毛片一区二区三区| 神马电影在线观看| 国产精品久久久久久久久久久久久久久久久| 国产99久久精品一区二区永久免费| www.污视频| 国产精品日韩成人| 色欲狠狠躁天天躁无码中文字幕| 午夜精品一区二区三区四区| 日本精品一区在线观看| 日韩免费黄色片| 国产一区二区免费视频| 久久综合免费视频影院| 手机看片日韩国产| 超碰免费在线播放| 青青草一区二区三区| 欧美成人精品福利| 久久日一线二线三线suv| 日韩欧美极品在线观看| 日本免费一二三区| 中文字幕亚洲一区二区三区五十路| 少妇高潮 亚洲精品| 欧美极品少妇xxxxⅹ免费视频| 亚洲精品一区二区三区影院忠贞| 欧美一区二区三区爱爱| 欧美大片在线观看一区二区| 国产美女裸体无遮挡免费视频| 亚洲福利av| 男人添女人下部高潮视频在观看| 91精品国产高清自在线看超| 人人做人人澡人人爽欧美| 国产精品国产三级国产专业不| 欧美一区二区二区| 屁屁影院ccyy国产第一页| 99国产精品免费网站| 男人日女人的bb| 国产精品户外野外| 色综合综合色| 日日骚一区二区三区| 国内精品国语自产拍在线观看| 国产美女视频一区二区三区| 亚洲女人被黑人巨大进入| 欧美xxxxbb| 免费精品99久久国产综合精品| 久久一区国产| 国产精品极品国产中出| 青青国产在线| 亚洲伦理一区二区| 欧美电影院免费观看| 日韩视频在线一区| 1024精品合集| 伊人色综合久久天天五月婷| 国产欧美视频在线| 在线成人综合色一区| 日本韩国精品一区二区| 无遮挡h肉3d动漫在线观看| 日韩成人短视频| 久久精品黄色片| 亚洲精品91天天久久人人| 国产乱码精品1区2区3区| 免费av网址在线| 日本中文字幕成人| 亚洲18色成人| 精品欧美乱码久久久久久1区2区| 欧美日韩aaaaa| 久久电影中文字幕| 日本高清一二三区| 亚洲二区视频| 国产在线播放一区| 欧美xxxxxx| 久久精品99国产精品| 欧美精品久久久久久久久久丰满| 色综合久久中文| 国产精品一级| 婷婷激情成人| bt欧美亚洲午夜电影天堂| 欧美高清在线一区| chien国产乱露脸对白| 性网站在线看| 成人黄色在线播放| 亚洲色欲色欲www| av先锋影院| 亚洲一区二区三区涩| 被男人吃奶添下面好舒服动态图| 免费成人动漫| 在线看片地址| 精精国产xxx在线视频app| 成人欧美一区二区三区视频| 久久天天狠狠| 亚洲欧洲另类精品久久综合| 丰满少妇一区二区三区| 99re6这里有精品热视频| 欧美在线视频不卡| 久久香蕉国产线看观看av| 欧美巨猛xxxx猛交黑人97人| 黄色一级片播放| 国语对白做受69| 国产高清在线观看免费不卡| 亚洲精品一线二线三线无人区| 欧美经典三级视频一区二区三区| 欧美极品jizzhd欧美18| 久久精品第一页| 霍思燕三级露全乳照| 在线免费观看黄色小视频| 天堂中文网在线| www.91| 欧美精品乱码久久久久久按摩| 久久九九精品99国产精品| 欧美精品日韩综合在线| 天天射天天色天天干| 亚洲三级影院| 成人免费网视频| 超碰97人人射妻| 国产亚洲欧美精品久久久www| 凹凸日日摸日日碰夜夜| 日本特黄a级高清免费大片| 亚洲美洲欧洲综合国产一区| 日本成人在线不卡视频| 国产高清一区日本| 久久亚洲国产成人精品无码区| 国产成人影院| 欧美在线观看一区二区| 污网站免费在线| 青青草一区二区三区| 91碰在线视频| 亚洲欧美se| 欧美人与动性xxxxx杂性| 91丝袜美腿美女视频网站| 一级片在线免费播放| 日日骚欧美日韩| 五月婷婷狠狠干| 中文字幕在线看| 成人在线视频网| 国内精品久久久久久久久| 国产精品一区二区三区免费视频| 久操视频在线观看免费| 女明星视频黄又免费| 依人在线免费视频| aaa一区二区三区| 黄色在线观看av| 欧美精选一区二区| 91看片就是不一样| 99re8这里只有精品| 北条麻妃在线视频观看| 青青草原在线免费观看| 亚洲日本中文字幕在线| 天天天天天天操| 久久这里有精品视频| 中文字幕亚洲日本| 久久久综合香蕉尹人综合网| 国产成人永久免费视频| 色8久久精品久久久久久蜜| 性欧美激情精品|