Struts2整合Freemarker生成静态页面

这是生成静态页面的预览:
[img]/upload/attachment/133987/18610a5a-a3d5-34cf-9742-be1391a7ec5a.jpg[/img]

其对应的模板文件:


<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;

@Override
public 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包如下

[img]/upload/attachment/133991/b0871143-2604-3acd-a1ad-0fe323c12fb3.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值