`

FreeMarker使用实例

阅读更多

FreeMarker使用实例 - qincidong - qincidong的博客

所需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使用例子.txt

    ### Freemarker 使用例子详解 #### 一、Hashes(散列)操作 在Freemarker模板语言中,散列(Hashes)是一种非常常见的数据结构,它可以用来存储键值对。这种数据结构非常适合用于需要根据特定键来快速查找或更新值...

    FreeMarker使用Macro实例

    FreeMarker使用Macro实例,很好的学习资料。

    struts2+hibernate+freemarker项目实例

    在学习和使用这个项目实例时,你需要理解每个框架的核心概念和工作原理,如Struts2的动作(Action)和结果(Result),Hibernate的实体(Entity)、会话(Session)和查询,以及FreeMarker的模板语法。此外,还需要...

    freemarker简单例子

    在这个“freemarker简单例子”中,我们将深入理解Freemarker的基本概念、配置以及如何在实际项目中使用。 1. **Freemarker基本概念** - **模板(Template)**:Freemarker的核心是模板,它定义了最终输出的静态...

    Freemarker 实例,Freemarker 实例

    下面将详细介绍Freemarker的核心概念、配置、语法以及常见使用场景。 **1. Freemarker核心概念** - **模板(Templates)**:Freemarker的核心是模板文件,它定义了页面的布局和样式,包含变量和控制结构。 - **数据...

    freemarker学习例子

    在“freemarker学习例子”中,你可能看到如何设置数据模型、创建简单的模板、使用条件语句和循环结构、导入和包含其他模板、以及处理国际化和模板继承等实践案例。通过这些例子,你可以深入理解Freemarker的工作原理...

    freeMarker简单实例

    以上就是一个FreeMarker的简单实例,展示了如何使用FreeMarker将Java对象与HTML模板结合,生成动态网页。在实际开发中,FreeMarker的强大功能远不止于此,它能帮助开发者实现灵活、高效且易于维护的视图层。

    FreeMarker应用实例和PPT

    本实例将深入探讨FreeMarker在Struts2中的应用,以及如何通过PPT形式进行演示。 1. **FreeMarker的基本概念** - **模板语言**:FreeMarker使用简单的文本文件作为模板,其中包含动态和静态内容的混合,动态内容由...

    freemarker替换变量实例

    freemarker替换变量实例

    spring mvc freemarker 简单例子

    通过这个简单的例子,我们可以看到Spring MVC和Freemarker的集成过程。在实际开发中,这只是一个基础的配置,可以根据项目需求进行更复杂的模板设计和数据绑定。例如,可以利用Freemarker的条件判断、循环结构、函数...

    JFinal+Maven+FreeMarker入门实例

    在"JFinal+Maven+FreeMarker入门实例"中,我们将看到如何配置和使用这些工具。首先,我们需要在项目根目录下创建一个`pom.xml`文件,这是Maven项目的配置文件。在这里,我们需要列出所有依赖项,包括JFinal和...

    freemarker 实例

    spring MVC + freemarker 实例 spring MVC + freemarker 实例 spring MVC + freemarker 实例 spring MVC + freemarker 实例

    freemarker实例下载

    综上所述,"freemarker实例下载"提供了一个实用的教程,涵盖了Freemarker的基础用法、与Spring的整合以及如何部署和运行。通过学习和实践这个实例,开发者可以更好地理解和掌握Freemarker在实际项目中的应用。

    一个意义深刻 FreeMarker 入门例子之HelloWord

    通过这个HelloWorld示例,你将了解到如何设置FreeMarker环境,如何创建和使用模板,以及如何将数据模型与模板结合。这只是一个基础的起点,FreeMarker还有更多高级特性等待探索,如宏定义、自定义指令等,这些将在你...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    ### FreeMarker实例教程知识点详解 #### 一、FreeMarker简介 **FreeMarker**是一款功能强大的模板引擎,主要用于生成文本输出,如HTML页面、电子邮件、配置文件等。它被广泛应用于Web开发领域,能够帮助开发者轻松...

    freeMarker例子

    在这个“freeMarker例子”中,我们可以深入学习FreeMarker的基本用法和特点。博客链接指向了iteye上的一个博客,尽管具体内容未给出,但通常会包含FreeMarker的安装、配置、基本语法、控制结构、内置函数以及与其他...

    grails使用freemarker.rar

    标题中的“grails使用freemarker.rar”表明这是一个关于如何在Grails框架中应用FreeMarker模板引擎的资源包。FreeMarker是一个开源的、基于Java的模板引擎,它用于生成动态HTML或其他格式的文本,比如XML、PDF等。...

    SpringBoot mybatis druid pagehelper freemarker 整合实例

    在本实例中,我们将深入探讨如何整合SpringBoot、MyBatis、Druid、PageHelper以及FreeMarker这五大组件,创建一个高效且易于管理的Web应用。这些技术在现代Java开发中占据着重要的地位,尤其在构建后端服务时,它们...

    freemarker入门文档及例子

    1. 用户列表展示:一个简单的例子,展示如何使用Freemarker遍历用户列表并显示用户信息,如用户名、邮箱等。 2. 动态生成邮件:另一个实例可能是创建一个模板,动态地根据用户数据生成个性化的电子邮件内容,如问候...

    freemarker简单实例

    freemarker简短易懂的工具类

Global site tag (gtag.js) - Google Analytics