Struts2整合Freemarker生成靜態頁面

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

這是生成靜態頁面的預覽:


其對應的模板文件:
<table style="text-align:center;FONT-SIZE: 11pt; WIDTH: 600px; FONT-FAMILY: 宋體; BORDER-COLLAPSE: collapse" borderColor=#3399ff cellSpacing=0 cellPadding=0 align=center border=1><tr><td><b>編號</b></td><td><b>用戶名</b></td><td><b>密碼</b></td><td><b>性別</b></td><td><b>年齡</b></td></tr><#list personList as person><tr><td>${person.id}</td><td>${person.name}</td><td>${person.password}</td><td>${person.sex}</td><td>${person.age}</td></tr></#list></table>


Action:
public class LoginAction extends ActionSupport {private String msg;@Overridepublic String execute() {StaticFreemarker sf = new StaticFreemarker();List<Person> persons = new ArrayList<Person>();for(int i=1;i<=23;i++){Person p = new Person();p.setId(i);p.setName("darkness" + i);p.setAge("23");p.setPassword("sky" + i);p.setSex("man");persons.add(p);}Map<String,List<Person>> map = new HashMap<String,List<Person>>();map.put("personList", persons);String htmlfile = "personList.html";try {sf.init("personList.ftl", htmlfile, map, "index");} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();}this.msg = htmlfile;return Action.SUCCESS;}public String getMsg() {return msg;}}


struts.xml配置文件:
<struts><package name="tutorial" extends="struts-default"><action name="login" class="org.darkness.freemarker.action.LoginAction"><result type="redirect">/${msg}</result></action></package>
</struts>


通過Freemarker生成靜態頁面的關鍵代碼如下:
public class StaticFreemarker {/*** 初始化模板引擎* * @param ftl 模板名稱* @param htmlName 需要生成html頁面的名稱* @param map 模板中需要的參數集合* @param relativePath 模板相對于根路徑的相對路徑* @throws IOException* @throws TemplateException*/@SuppressWarnings("unchecked")public void init(String ftl, String htmlName, Map map, String relativePath)throws IOException, TemplateException {Configuration freemarkerCfg = new Configuration();freemarkerCfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "/" + relativePath);freemarkerCfg.setEncoding(Locale.getDefault(), "gbk");Template template = freemarkerCfg.getTemplate(ftl);template.setEncoding("gbk");String path = ServletActionContext.getServletContext().getRealPath("/");File htmlFile = new File(path + htmlName);Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "gbk"));template.process(map, out);out.flush();out.close();}}


說明:需要添加的jar包如下


轉載于:https://my.oschina.net/darkness/blog/802776

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397184.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用flot.js 發現x軸y軸無法顯示軸名稱

添加此插件解決問題 flot-axislabels https://github.com/markrcote/flot-axislabels 轉載于:https://www.cnblogs.com/feehuang/p/4993920.html

快速冪、矩陣快速冪、快速乘法

快速冪 快速冪是我們經常用到的一種算法&#xff0c;快速冪顧名思義就是快速的冪運算。我們在很多題目中都會遇到冪運算&#xff0c;但是在指數很大的時候&#xff0c;我們如果用for或者是pow就會超時&#xff0c;這時候就用到了快速冪。 快速冪的原理就是&#xff0c;當求b^p的…

vue 前端顯示圖片加token_手摸手,帶你用vue擼后臺 系列二(登錄權限篇)

完整項目地址&#xff1a;vue-element-adminhttps://github.com/PanJiaChen/vue-element-admin前言拖更有點嚴重&#xff0c;過了半個月才寫了第二篇教程。無奈自己是一個業務猿&#xff0c;每天被我司的產品虐的死去活來&#xff0c;之前又病了一下休息了幾天&#xff0c;大家…

注釋工具_蘋果已購丨Notability丨功能強大而簡單易用的筆記及PDF注釋工具

點擊上方“天澤黑科技”右上角“...”點選“設為星標”點擊加星★ 貼近你心 ?今天給大家購買效率類排行第3名的 Notability &#xff01;大家在桌面 App store 登陸我的賬號&#xff0c;搜索下載即可&#xff01;榮獲 iPad、iPhone 和 Mac 的 Apple「編」愛新 App 殊榮&#x…

第四章 大網高級 ? NSSA

STUB、完全stub、NSSA、完全nssa實驗要求&#xff1a;1、配置IP地址2、配置OSPF多區域3、配置 stub 末梢區域4、配置完全stub末梢區域5、配置 nssa 非純末梢區域6、配置完全nssa非純末梢區域7、配置兩種協議相互注入重分發8、實現全網互通一、配置OSPF多區域二、配置rip v2三、…

[AlwaysOn Availability Groups] 健康模型 Part 2 ——擴展

[AlwaysOn Availability Groups] 健康模型 Part 2 ——擴展 健康模型擴展 第一部分已經介紹了AlwayOn健康模型的概述。現在是創建一個自己的PBM策略&#xff0c;然后設置為制定的歸類。創建這些策略&#xff0c;創建之后修改一下配置&#xff0c;dashboard就會自動評估這些策略…

665. Non-decreasing Array - LeetCode

Question 665. Non-decreasing Array Solution 題目大意&#xff1a; 思路&#xff1a;當前判斷2的時候可以將當前元素2變為4&#xff0c;也可以將上一個元素4變為2&#xff0c;再判斷兩變化后是否滿足要求。 Java實現&#xff1a; public boolean checkPossibility(int[] nums…

如何制作印章_如何用Photoshop制作個性印章/文字圖片

帶印章和文字的圖片&#xff0c;不僅可以作為個人的標簽&#xff0c;更能直接表達照片的意境&#xff0c;讓片子與眾不同。那么&#xff0c;怎樣才能給照片加印章和文字呢&#xff1f;或許方法有很多&#xff0c;甚至有多款App也可以直接做效果。但想要做出精細的效果&#xff…

麒麟810處理器_麒麟810性能實測:對比驍龍845驍龍730,誰更強?

隨著榮耀9X、Nova5i Pro一眾新機發布&#xff0c;采用7nm工藝制程的全新麒麟810進入了我們的視野。以手機處理器性能劃分產品定位向來是最為直接的方法&#xff0c;在搭載麒麟810的榮耀9X將價格下探到1399元后&#xff0c;這枚網友口中“拳打845&#xff0c;腳踢730”的中端神u…

打造全鍵盤操作的PDF閱讀器

其實我只想要一個非常簡單的PDF閱讀器&#xff0c;不要很花哨的功能&#xff0c;只要能夠&#xff1a; 速度夠快&#xff0c;不要翻一頁等半天&#xff1b;全鍵盤操作&#xff0c;不想在鼠標和鍵盤之間來回倒騰&#xff1b;可以改變背景色&#xff0c;深夜的白光好刺眼&#xf…

python篩選含變量的特定行_Python SQL從特定變量字段中選擇行

我想從基于隨機變量的行中獲取一個特定的值。下面是一個示例表&#xff0c;PID列是一個“自動遞增主鍵整數”&#xff0c;其他兩列是文本示例表PID NAME PHONE--- ---- -----1 bill 999-99992 joe 888-8888我想把一個隨機變量扔到桌子上randomVariable raw_input(Enter someth…

mysql 導出dmp文件_一文帶你了解MySQL主從復制(Master-Slave)

1.復制概述Mysql內建的復制功能是構建大型&#xff0c;高性能應用程序的基礎。將Mysql的數據分布到多個系統上去&#xff0c;這種分布的機制&#xff0c;是通過將Mysql的某一臺主機的數據復制到其它主機(slaves)上&#xff0c;并重新執行一遍來實現的。復制過程中一個服務器充當…

iOS開發學無止境 - NSFileManager文件操作的十個小功能

&#xff08;配圖的小故事還記得嘛&#xff09; NSFileManager是一個單列類&#xff0c;也是一個文件管理器。可以通過NSFileManager創建文件夾、創建文件、寫文件、讀文件內容等等基本功能。 下面將介紹NSFileManager文件操作的十個小功能。我們在Documents里面進行舉例&#…

smokeping自動檢測系統

如何的使用smokeping來監控idc機房的網絡質量情況&#xff0c;從監控圖上的延時與丟包能分辨出你機房的網絡是否穩定&#xff0c;是否為多線&#xff0c;是否為BGP機房&#xff0c;到各城市的3個運行商網絡各是什么情況&#xff0c;如果出現問題&#xff0c;如果有針對的解決。…

ElasticSearch聚合分析

聚合用于分析查詢結果集的統計指標&#xff0c;我們以觀看日志分析為例&#xff0c;介紹各種常用的ElasticSearch聚合操作。 目錄&#xff1a; 查詢用戶觀看視頻數和觀看時長聚合分頁器查詢視頻uv 單個視頻uv批量查詢視頻uvHaving查詢 根據 count 進行過濾根據其它指標進行過濾…

bg感_【0328】BG推文 | 5本我在逃生游戲里養娃娃+歲月繾綣已無你+關于我比女主蘇這回事+消失的白月光又回來了等...

大家多多支持原文&#xff01;以下內容多為網絡搜集&#xff0c;非商業用途。版權歸原作者所有&#xff0c;侵聯&#xff01;BG文《我在逃生游戲里養娃娃》作者&#xff1a;鶴舫閑人《歲月繾綣已無你》作者&#xff1a;酒爺《關于我比女主蘇這回事》作者&#xff1a;歡何極《消…

android 屏幕最小寬度_AndroidTV屏幕適配-smallestWidth(最小寬度) 限定符

背景前幾天接到一個需求&#xff0c;把項目上的原來的2k屏幕適配到4k屏幕。我采用的是smallestWidth最小寬度限定符進行適配的我們項目的。1&#xff0c;smallestWidth 限定符適配原理系統都是根據限定符去尋找對應的 dimens.xml 文件。例如在最小寬度為 720dp 的設備上&#x…

mysql 組合索引

MySQL單列索引是我們使用MySQL數據庫中經常會見到的&#xff0c;MySQL單列索引和組合索引的區別可能有很多人還不是十分的了解&#xff0c;下面就為您分析兩者的主要區別&#xff0c;供您參考學習。 為了形象地對比兩者&#xff0c;再建一個表&#xff1a; CREATE TABLE myInde…

cmake使用總結(轉)---工程主目錄CMakeList文件編寫

在linux 下進行開發很多人選擇編寫makefile 文件進行項目環境搭建&#xff0c;而makefile 文件依賴關系復雜&#xff0c;工作量很大&#xff0c;搞的人頭很大。采用自動化的項目構建工具cmake 可以將程序員從復雜的makefile 文件中解脫出來。cmake 根據內置的規則和語法來自動生…

微信開發者工具 wxmi修改模版顏色_十款高效好用的在線網頁工具,提升你的辦公效率...

大家好&#xff0c; 我是阿毛&#xff0c;今天給大家推薦高效辦公的10個在線網頁工具&#xff0c;可以不用下載安裝很多app&#xff0c;也不用在電腦上裝很多軟件。在線制作精彩視頻操作非常簡單&#xff0c;選擇模板&#xff0c;上傳照片然后點擊制作等待完成就可以了&#xf…