Mick.987

相信开源,才是未来的春天!

 

struts2+freemarker 生成静态页面

创建项目

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.以上例子下载地址如下:

 

宝贝网址:

posted on 2011-12-26 22:08  张朋飞  阅读(1108)  评论(0编辑  收藏  举报

导航