所需Jar包: freemarker.jar 本例使用了struts2 commons-logging.jar ognlXXX.jar struts2-coreXXX.jar xwork.jar 这是struts2必须的Jar包。 在web.xml中加入struts2过滤器,拦截请求。 <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> struts.xml配置: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="user" extends="struts-default" namespace="/user"> <action name="login" class="com.freemarker.test.LoginAction"> <result type="redirect">/${flag}</result> </action> </package> </struts> JAVA类: StaticFreeMarker.java package com.freemarker.test; 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 StaticFreemarker { @SuppressWarnings("unchecked") public void init(String ftl,Map map,String htmlName,String fileName) throws IOException, TemplateException { Configuration cfg = new Configuration(); cfg.setEncoding(Locale.getDefault(), "gbk"); cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "/" + fileName); Template template = cfg.getTemplate(ftl); template.setEncoding("gbk"); String path = ServletActionContext.getServletContext().getRealPath("/"); File file = new File(path + htmlName); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"gbk")); template.process(map, out); out.flush(); out.close(); } } User.java package com.freemarker.test; import java.io.Serializable; public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer id; private String name; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } LoginAction.java package com.freemarker.test; 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.sun.org.apache.bcel.internal.generic.ARRAYLENGTH; import freemarker.template.TemplateException; public class LoginAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; // 跳转标识 private String flag; private User user; public String getFlag() { return flag; } public void setFlag(String flag) { this.flag = flag; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() { if (user == null) { this.flag = "login.jsp"; } else { StaticFreemarker sf = new StaticFreemarker(); Map map = new HashMap(); String htmlName = "success.html"; // 1.添加对象 map.put("user", this.user); List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setId(100); user1.setName("scott"); user1.setPassword("tiger"); User user2 = new User(); user2.setId(200); user2.setName("root"); user2.setPassword("123"); userList.add(user1); userList.add(user2); // 添加集合 map.put("userList", userList); // 添加bool值 map.put("isTrue", true); try { sf.init("test.ftl", map, htmlName, "demo"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.flag = htmlName; // 决定要跳转到哪个页面 } return SUCCESS; } } 在webContent下有demo目录,其中有login.jsp和test.ftl文件。 login.jsp <%@ page language="java" contentType="text/html;" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>用户登录</title> </head> <body> <s:form action="/user/login.action"> <table> <tr> <td>用户名</td> <td><input type="text" name="user.name"/></td> </tr> <tr> <td>密码</td> <td><input type="text" name="user.password"/></td> </tr> <tr align="center"> <td colspan="2"> <input type="submit" value="登录"/> </td> </tr> </table> </s:form> </body> </html> test.ftl: <html> <body> 您好,您已成功登录系统!<br> 以下是您的登录信息:<br> 用户名:${user.name}<br> 密码:${user.password}<br><br> <span>以下为测试信息:<span><br> <#list userList as user> Id:${user.id}<br> Name:${user.name}<br> Pwd:${user.password}<br><br> </#list> <hr> Boolean:<br> <#if isTrue> isTrue = true; </#if> </body> </html>
相关推荐
### Freemarker 使用例子详解 #### 一、Hashes(散列)操作 在Freemarker模板语言中,散列(Hashes)是一种非常常见的数据结构,它可以用来存储键值对。这种数据结构非常适合用于需要根据特定键来快速查找或更新值...
FreeMarker使用Macro实例,很好的学习资料。
在学习和使用这个项目实例时,你需要理解每个框架的核心概念和工作原理,如Struts2的动作(Action)和结果(Result),Hibernate的实体(Entity)、会话(Session)和查询,以及FreeMarker的模板语法。此外,还需要...
在这个“freemarker简单例子”中,我们将深入理解Freemarker的基本概念、配置以及如何在实际项目中使用。 1. **Freemarker基本概念** - **模板(Template)**:Freemarker的核心是模板,它定义了最终输出的静态...
下面将详细介绍Freemarker的核心概念、配置、语法以及常见使用场景。 **1. Freemarker核心概念** - **模板(Templates)**:Freemarker的核心是模板文件,它定义了页面的布局和样式,包含变量和控制结构。 - **数据...
在“freemarker学习例子”中,你可能看到如何设置数据模型、创建简单的模板、使用条件语句和循环结构、导入和包含其他模板、以及处理国际化和模板继承等实践案例。通过这些例子,你可以深入理解Freemarker的工作原理...
以上就是一个FreeMarker的简单实例,展示了如何使用FreeMarker将Java对象与HTML模板结合,生成动态网页。在实际开发中,FreeMarker的强大功能远不止于此,它能帮助开发者实现灵活、高效且易于维护的视图层。
本实例将深入探讨FreeMarker在Struts2中的应用,以及如何通过PPT形式进行演示。 1. **FreeMarker的基本概念** - **模板语言**:FreeMarker使用简单的文本文件作为模板,其中包含动态和静态内容的混合,动态内容由...
freemarker替换变量实例
通过这个简单的例子,我们可以看到Spring MVC和Freemarker的集成过程。在实际开发中,这只是一个基础的配置,可以根据项目需求进行更复杂的模板设计和数据绑定。例如,可以利用Freemarker的条件判断、循环结构、函数...
在"JFinal+Maven+FreeMarker入门实例"中,我们将看到如何配置和使用这些工具。首先,我们需要在项目根目录下创建一个`pom.xml`文件,这是Maven项目的配置文件。在这里,我们需要列出所有依赖项,包括JFinal和...
spring MVC + freemarker 实例 spring MVC + freemarker 实例 spring MVC + freemarker 实例 spring MVC + freemarker 实例
综上所述,"freemarker实例下载"提供了一个实用的教程,涵盖了Freemarker的基础用法、与Spring的整合以及如何部署和运行。通过学习和实践这个实例,开发者可以更好地理解和掌握Freemarker在实际项目中的应用。
通过这个HelloWorld示例,你将了解到如何设置FreeMarker环境,如何创建和使用模板,以及如何将数据模型与模板结合。这只是一个基础的起点,FreeMarker还有更多高级特性等待探索,如宏定义、自定义指令等,这些将在你...
### FreeMarker实例教程知识点详解 #### 一、FreeMarker简介 **FreeMarker**是一款功能强大的模板引擎,主要用于生成文本输出,如HTML页面、电子邮件、配置文件等。它被广泛应用于Web开发领域,能够帮助开发者轻松...
在这个“freeMarker例子”中,我们可以深入学习FreeMarker的基本用法和特点。博客链接指向了iteye上的一个博客,尽管具体内容未给出,但通常会包含FreeMarker的安装、配置、基本语法、控制结构、内置函数以及与其他...
标题中的“grails使用freemarker.rar”表明这是一个关于如何在Grails框架中应用FreeMarker模板引擎的资源包。FreeMarker是一个开源的、基于Java的模板引擎,它用于生成动态HTML或其他格式的文本,比如XML、PDF等。...
在本实例中,我们将深入探讨如何整合SpringBoot、MyBatis、Druid、PageHelper以及FreeMarker这五大组件,创建一个高效且易于管理的Web应用。这些技术在现代Java开发中占据着重要的地位,尤其在构建后端服务时,它们...
1. 用户列表展示:一个简单的例子,展示如何使用Freemarker遍历用户列表并显示用户信息,如用户名、邮箱等。 2. 动态生成邮件:另一个实例可能是创建一个模板,动态地根据用户数据生成个性化的电子邮件内容,如问候...
freemarker简短易懂的工具类