`

Struts2整合Freemarker生成静态页面

阅读更多
这是生成静态页面的预览:


其对应的模板文件:

 <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.password}</td>
     	<td>${person.sex}</td>
     	<td>${person.age}</td>
     </tr>
        
     </#list>
     
</table>



Action:
public class LoginAction extends ActionSupport {

	private String msg;

	@Override
	public String execute() {

		StaticFreemarker sf = new StaticFreemarker();

		List<Person> persons = new ArrayList<Person>();

		for(int i=1;i<=23;i++){
			Person p = new Person();
			p.setId(i);
			p.setName("darkness" + i);
			p.setAge("23");
			p.setPassword("sky" + i);
			p.setSex("man");
			persons.add(p);
		}
		
		Map<String,List<Person>> map = new HashMap<String,List<Person>>();

		map.put("personList", persons);

		String htmlfile = "personList.html";

		try {
			sf.init("personList.ftl", htmlfile, map, "index");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}
		this.msg = htmlfile;

		return Action.SUCCESS;
	}

	public String getMsg() {
		return msg;
	}

}


struts.xml配置文件:
<struts>
    <package name="tutorial" extends="struts-default">
       <action name="login" class="org.darkness.freemarker.action.LoginAction">
       	<result type="redirect">/${msg}</result>
       </action>
    </package>
</struts>


通过Freemarker生成静态页面的关键代码如下:
public class StaticFreemarker {

	/**
	 * 初始化模板引擎
	 * 
	 * @param ftl 模板名称
	 * @param htmlName 需要生成html页面的名称
	 * @param map 模板中需要的参数集合
	 * @param relativePath 模板相对于根路径的相对路径
	 * @throws IOException
	 * @throws TemplateException
	 */
	@SuppressWarnings("unchecked")
	public void init(String ftl, String htmlName, Map map, String relativePath)
			throws IOException, TemplateException {
		
		Configuration freemarkerCfg = new Configuration();
		freemarkerCfg.setServletContextForTemplateLoading(ServletActionContext
				.getServletContext(), "/" + relativePath);
		freemarkerCfg.setEncoding(Locale.getDefault(), "gbk");
		
		Template template = freemarkerCfg.getTemplate(ftl);
		template.setEncoding("gbk");
		
		String path = ServletActionContext.getServletContext().getRealPath("/");
		
		File htmlFile = new File(path + htmlName);

		Writer out = new BufferedWriter(new OutputStreamWriter(
				new FileOutputStream(htmlFile), "gbk"));
		template.process(map, out);
		out.flush();
		out.close();
	}

}


说明:需要添加的jar包如下


  • 大小: 105.4 KB
  • 大小: 7 KB
分享到:
评论
3 楼 vicklin 2013-02-22  
感谢加1
2 楼 seanchen1990 2012-07-10  
博主!太感动了!某菜鸟感谢你!
1 楼 sunping10000 2012-04-19  
很给力,兄弟

相关推荐

    FreeMarker与struts2整合生成静态页面

    FreeMarker与Struts2的...通过这个案例,开发者可以学习到如何将FreeMarker与Struts2结合起来,实现动态生成静态页面,以及如何使用c3p0和dbUtils进行数据库操作。这对于理解Web应用的架构和提高开发效率具有重要意义。

    struts2+freemarker 框架

    Struts2整合FreeMarker实例框架初学例子....利用Struts2生成静态页面其实很灵活,很强大,尤其是利用Struts2对Freemarker较好的支持,充分利用Freemarker的模板功能来生成静态页面。 比较简单.大家见笑了.

    spring+hibernate+struts2+freemarker SSH2 新闻发布系统

    在新闻发布系统中,Freemarker被用作视图层技术,与Struts2结合,根据Action返回的数据动态生成静态页面。这样可以将业务逻辑与表现逻辑分离,使得代码更加清晰。 5. **用户认证与权限管理** 系统中预设了一个管理...

    struts1.2+freeMarker

    - 使用FreeMarker生成静态网页,可以预先计算好所有数据并缓存,从而避免每次请求都与数据库交互,提高页面加载速度。 - 静态化技术可以应用于不经常改变但访问频繁的页面,例如产品详情页或文章列表页。这可以...

    freemarker+struts2+spring完美整合!

    部署到tomcat中, 访问/freemarker/build_index.action 点击首页生成,当显示生成成功过后 然后访问 ...已经完美将struts2+freemarker+spring整合~ 希望对你们有所帮助。 经测试:tomcat5.5 无法正常运行

    struts+freemarker 源码例

    在Struts与FreeMarker的整合中,通常需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中定义Action和对应的Result,指定使用FreeMarker来渲染结果。例如: ```xml &lt;result type="freemarker"&gt;/...

    struts2+freemarker+log4j

    Struts2、Freemarker和Log4j是Java Web开发中的三个重要组件,它们各自扮演着不同的角色。这里,我们来深入探讨这三个技术的核心概念及其整合应用。 **Struts2** 是一个开源的MVC(Model-View-Controller)框架,...

    Struts+Spring+Hibernate+Freemarker新闻系统

    这个新闻系统就是利用这四个技术进行整合构建的,旨在提供一个高效、灵活且易于维护的后台管理系统,同时具备生成静态页面的能力,以优化网站性能。 1. **Struts**: Struts是一个基于MVC设计模式的Java Web框架,...

    Struts2+Spring2.5+hibernate3.2+freemarker

    开发者可以在模板中使用变量和控制结构,FreeMarker会结合后台提供的数据模型,生成最终的静态页面。 在"Struts2+Spring2.5+Hibernate3.2+Freemarker"的集成中,Spring作为整体的容器,负责管理所有组件的生命周期...

    freemaker+struts2

    4. **整合 FreeMarker**:在 Struts2 中使用 FreeMarker 作为视图层,需要添加相应的 JAR 包,并在 `web.xml` 中配置 Struts2 的 FilterDispatcher。在模板中可以直接使用 Struts2 的标签库,通过 `&lt;@...&gt;` 语法调用...

    jFreeChart资源 及 相关配置 及 帮助文档 及 与struts2整合案例

    整合过程包括在Struts2 Action中生成图表,然后通过JSP或FreeMarker模板将其渲染到页面上。同时,需要配置Struts2的Action结果类型,确保能够正确返回图表的图像流。 5. **案例分析** 包含的整合案例可能展示了...

    基于struts2 spring hibernate整合

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,并通过整合可以构建出高效、模块化的应用程序。在这个“基于Struts2 Spring Hibernate整合”的项目中,我们看到开发者使用了Maven...

    jfreechart整合struts2的压缩包

    通过整合JFreeChart,开发者可以在Struts2的Action中处理业务逻辑,然后利用JFreeChart生成相应的图表,最后通过Struts2的Result返回到前端页面展示。 整合JFreechart和Struts2的过程主要包括以下几个步骤: 1. **...

    Struts2属性文件详解

    该属性指定了Struts 2使用的FreeMarker管理器,默认值为`org.apache.struts2.views.freemarker.FreemarkerManager`。 #### struts.freemarker.wrapper.altMap 此属性只支持`true`和`false`两个属性值,默认值为`...

    FreeMarker应用实例和PPT

    - **Struts2整合步骤**:展示如何在Struts2项目中添加FreeMarker支持,配置文件设置,Action和模板的关联。 - **模板示例**:展示一个完整的FreeMarker模板,包括变量、表达式、指令的使用。 - **最佳实践**:...

    Spring MVC + Tiles + FreeMarker 的整合

    开发者可以在FreeMarker模板中定义变量和逻辑,然后在服务器端填充这些变量,最后由FreeMarker生成最终的HTML响应。 **整合过程** 1. **设置项目结构**:在Web应用中,通常会将Spring MVC相关的配置文件(如`...

    struts2+jfreechart

    2. **插件体系**:提供了丰富的插件,如Tiles、Freemarker等,方便开发者快速构建页面。 3. **异常处理**:通过全局异常映射,可以统一处理异常,提高代码可读性。 4. **拦截器**:允许开发者定义自己的拦截器,实现...

    freemarker案例

    Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,与Struts2等MVC框架结合使用,能够实现动态页面渲染。本案例主要探讨如何在Struts2框架中整合并应用FreeMarker模板技术。 1. **Freemarker简介** ...

    freemarker+fckeditor+struts+hibernate

    开发者定义模板,其中包含静态文本和变量,FreeMarker负责将变量替换为实际值,生成最终的动态页面。在Struts框架中,FreeMarker通常用于视图层,提供灵活且高效的页面渲染。 **FCKeditor** FCKeditor是历史上广泛...

Global site tag (gtag.js) - Google Analytics