struts2中使用freemarker 生成静态页面

标签: struts2 中使 freemarker | 发表时间:2013-05-29 01:53 | 作者:liweifengwf
出处:http://blog.csdn.net

按一下步骤走:

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  页面如下:







作者:liweifengwf 发表于2013-5-29 1:53:15 原文链接
阅读:121 评论:0 查看评论

相关 [struts2 中使 freemarker] 推荐:

struts2中使用freemarker 生成静态页面

- - CSDN博客推荐文章
2.导入struts2的相关jar文件. 3.在web.xml中配置如下:. 4.创建struts.xml文件,具体内容如下:. 在配置视图类型时,也可以直接用type="freemarker"这个访问指定的模板,在这里我用的是动态访问生成的html页面. 5,创建javaBean  User.java.

freemarker生成word

- - 开源软件 - ITeye博客
freemarker生成word.          利用freemarker生成word,在项目中有用到,就单独写个测试以及用法列出来,欢迎圈错,共同学习.       一、应用场景和效果图.             1.应用场景:.                    a.xx项目里面需要定期生成xx报告,记录最近xx情况.

Spring MVC 和 Struts2

- - CSDN博客架构设计推荐文章
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比《 Struts1和Struts2》,这篇将对比下Struts2和SpringMVC的异同,下面数据基本来源于网络,本人是搜集整理所得,供大家参考. 一个项目使用什么样的技术,决定的因素很多,我所能想到的有:对系统的性能、开发的效率、团队学习的成本、业务场景等,下面尽量从这几个方面入手,来分析比较下他们之间存在的优劣.

struts2的标签tag

- - CSDN博客编程语言推荐文章
二、 常用的Struts 2.0的标志(Tag)介绍. 在上一篇文章《 为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节. 如果,您看完《 为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我.

Struts2常用标签总结

- - CSDN博客推荐文章
1.Struts2的作用 . Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性. Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求. Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用.

Struts2 标签库讲解

- - CSDN博客架构设计推荐文章
Struts2 标签库讲解. 转自:http://blog.163.com/hzd_love/blog/static/131999881201082111852520/. 要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可:. struts2的标签共分为五大类:. 1)条件标签:用于执行基本的条件流转.

struts1,struts2,springMVC终极对比

- - CSDN博客Web前端推荐文章
         最近做项目用到了struts2,之前一直是用struts1和springMVC. 感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比.          Struts1官方已经停止更新,现在用的也比较少,这里主要讲一下struts2和struts1比较都有哪些不同和进步.

maven工程下整合spring+mybatis+freemarker

- - CSDN博客架构设计推荐文章
博客地址:http://zhengyinhui.com/?p=142. 由于工作主要是前端开发,做后端的项目比较少,最近自己做个项目,发觉好多的都忘了,这里写篇博客整理下maven工程下整合spring+mybatis+freemarker相关内容. 新建个Archetype为maven-archetype-webapp的maven项目(安装maven插件:http://download.eclipse.org/technology/m2e/releases),在pom文件添加相关依赖:.

java导出word之freemarker导出

- - 企业架构 - ITeye博客
       一,简单模板导出(不含图片, 不含表格循环).          1, 新建一个word文档, 输入如下类容:.          2, 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名).          3, 将xml文件的扩展名直接改为ftl.          4, 用java代码完成导出(需要导入freemarker.jar).

Spring整合freemarker发送邮件

- - CSDN博客推荐文章
在上一篇博文:  使用JavaMail发送邮件和接受邮件, 我们学习了原生的JavaApi发送邮件, 我们会发现代码比较多, 特别是当邮件内容很丰富的时候, 我们需要在Java中拼装Html, 是不是觉得非常麻烦. . 下面我们使用一种比较简单的方法: spring + javaMail + freemarker, 使用freemarker模板引擎后, 我们就不用再在Java中拼装html..