struts2中使用freemarker 生成静态页面

按一下步骤走:

1.创建项目

2.导入struts2的相关jar文件

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</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文件,具体内容如下:

在配置视图类型时,也可以直接用type="freemarker"这个访问指定的模板,在这里我用的是动态访问生成的html页面

<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="wf" extends="struts-default">
		<action name="userList" class="org.Struts2">
			<!-- <result name="success" type="freemarker">/templates/template.ftl</result> -->
			<result type="redirect">${url}</result>
		</action>
	</package>
</struts>

5,创建javaBean  User.java

package org;

public class User {
	private  String name;
	private int id;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}

6.然后创建CreatHtml.java,执行时调用模板类生成指定的页面

package 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 CreatHtml {
	public void init(String ftl, String htmlName, Map map) throws IOException,TemplateException {
		// 创建Configuration对象
		Configuration cfg = new Configuration();
		// 设置FreeMarker的模版文件位置
		cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "templates");
		cfg.setEncoding(Locale.getDefault(), "utf-8");


		// 创建Template对象
		Template template = cfg.getTemplate(ftl);
		template.setEncoding("utf-8");


		// 生成静态页面
		String path = ServletActionContext.getServletContext().getRealPath("/");
		File fileName = new java.io.File(path + htmlName);
		Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "utf-8"));
		template.process(map, writer);
		writer.flush();
		writer.close();
	}
}
7.创建Action文件Struts2.java 具体内容如下:

package org;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import util.CreatHtml;
import com.opensymphony.xwork2.ActionSupport;
public class Struts2 extends ActionSupport {
	private String url;
	private List<User> list;

	public String execute() throws Exception {
		CreatHtml creatHtml = new CreatHtml();
		list = new ArrayList<User>();
		User user = null;
		for (int i = 0; i < 10; i++) {
			user = new User();
			user.setId(i);
			user.setName("name" + i);
			user.setAge(i + i);
			list.add(user);
		}
		Map<String, List<User>> map = new HashMap<String, List<User>>();
		map.put("userList", list);
		String fileName = "user.html";
		String ftl = "temalate.ftl";
		creatHtml.init(ftl, fileName, map);
		// url作为struts.xml中的result的视图返回页面
		this.url = fileName;
		return SUCCESS;
	}
	public List<User> getList() {
		return list;
	}
	public void setList(List<User> list) {
		this.list = list;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	private static final long serialVersionUID = 1L;
}
8.创建模板文件在根目录templates文件夹下template.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>    
    </tr>
    <#list userList as user>   
    <tr>   
        <td>${user.id}</td>   
        <td>${user.name}</td>
        <td>${user.age}</td>
    </tr>
	</#list>
</table>
9.浏览器输入http://localhost/Struts2/user.html,访问action  页面如下:


10.源文件实例下载 http://download.csdn.net/detail/liweifengwf/5470833





  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值