struts2+freemarker 生成静态页面

来源:互联网 发布:ip的网络号和主机号 编辑:程序博客网 时间:2024/05/20 03:42

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

0 0
原创粉丝点击