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

效果图如下:

struts2+freemarker 生成静态页面_第1张图片

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

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

 

你可能感兴趣的:(freemarker,struts,服务器,action,webapp,encoding)