struts2+freemarker 生成静态页面



struts2+freemarker 生成静态页面

struts2+freemarker 生成静态页面

1.创建项目

2.导入struts2的相关jar文件

3.在web.xml中配置如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app id=”WebApp_ID” version=”2.4″ xmlns=”http://java.sun.com/xml/ns/j2ee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”>
<display-name>MyFreemark</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

4.创建struts.xml文件,且内容如下:

<?xml version=”1.0″ encoding=”GBK”?>
<!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
<struts>
<!— Add packages here –>
<constant name=”struts.devMode” value=”true” />
<constant name=”struts.i18n.encoding” value=”GBK” />
<package name=”default” namespace=”/” extends=”struts-default”>
<action name=”list” class=”com.zsw.action.ListAction”>
<result type=”redirect”>/${msg}</result>
</action>
</package>
</struts>

5.创建CreateHtml.java用来生成静态页面

package com.zsw.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class CreateHtml {
/**
*
* @param ftl  模板文件
* @param htmlName html文件名称
* @param map    map保存数据
* @param relaPath  //在这里没有用到
* @throws IOException
* @throws TemplateException
*/
public void init(String ftl, String htmlName, Map map, String relaPath) throws IOException, TemplateException {

//创建Configuration对象
Configuration cfg = new Configuration();
cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), ”/”);
cfg.setEncoding(Locale.getDefault(), ”gbk”);

//创建Template对象
Template template = cfg.getTemplate(ftl);
template.setEncoding(“gbk”);

//生成静态页面
String path = ServletActionContext.getServletContext().getRealPath(“/”);
File fileName = new File(path + htmlName);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), ”gbk”));
template.process(map, out);
out.flush();
out.close();

}
}


6.创建Action文件ListAction.java,如下:

package com.zsw.action;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import com.zsw.util.CreateHtml;
import com.zsw.vo.Person;
import freemarker.template.TemplateException;
public class ListAction extends ActionSupport {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}

public String execute() {
CreateHtml createHtml = new CreateHtml();
List<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 5; i++) {
Person p = new Person();
p.setId(i);
p.setName(“a” + ”1″);
p.setAge(“5″);
p.setSex(“man”);
persons.add(p);
}

Map<String, List<Person>> map = new HashMap<String, List<Person>>();
map.put(“personlist”, persons);
String htmlName = ”personlist.html”;
String ftl = ”person.ftl”;
String relaPath = ”index.jsp”;

try {
createHtml.init(ftl, htmlName, map, relaPath);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
this.msg = htmlName;
return SUCCESS;
}
}

7.创建模板文件person.ftl

<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.sex}</td>
<td>${person.age}</td>
</tr>
</#list>
</table>

8.启动服务器,访问地址:http://localhost:8080/MyFreemark/list

效果图如下:

9.以上例子下载地址如下:

http://download.csdn.net/source/3490291