`
jetway
  • 浏览: 483686 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

freemarker s

    博客分类:
  • java
阅读更多

 

FreeMarker概述

l         FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写

l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序

l         虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)


 

l         FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件

l         FreeMarker与容器无关,因为它并不知道HTTPServletFreeMarker同样可以应用于非Web应用程序环境

l         FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库

l         FreeMarker是免费的

 

 

1、通用目标

l         能够生成各种文本:HTMLXMLRTFJava源代码等等

l         易于嵌入到你的产品中:轻量级;不需要Servlet环境

l         插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等

l         你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器

 

2、强大的模板语言

l         所有常用的指令:includeif/elseif/else、循环结构

l         在模板中创建和改变变量

l         几乎在任何地方都可以使用复杂表达式来指定值

l         命名的宏,可以具有位置参数和嵌套内容

l         名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突

l         输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换

 

3、通用数据模型

l         FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示

l         你可以使用抽象(接口)方式表示对象(JavaBeanXML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰

 

4、为Web准备

l         在模板语言中内建处理典型Web相关任务(如HTML转义)的结构

l         能够集成到Model2 Web应用框架中作为JSP的替代

l         支持JSP标记库

l         MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员

 

5、智能的国际化和本地化

l         字符集智能化(内部使用UNICODE

l         数字格式本地化敏感

l         日期和时间格式本地化敏感

l         US字符集可以用作标识(如变量名)

l         多种不同语言的相同模板

 

6、强大的XML处理能力

l         <#recurse> <#visit>指令(2.3版本)用于递归遍历XML

l         在模板中清楚和直觉的访问XML对象模型

 

下面我就用freemarker写一个例子:这里我用的是单例模式

首先要freemarker.jar包,这里我结合了Struts1.x

1,写了freemarker 编译的类.例下:

package com.lch.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;

import javax.servlet.ServletContext;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class FreeMarkerFactory {

private static FreeMarkerFactory fmf=new FreeMarkerFactory();

private FreeMarkerFactory(){}

public static FreeMarkerFactory getIntersten(){
   return fmf;
}
public void init(String ftl,String htmlName,Map map,String fileName,ServletContext sc)
throws IOException, TemplateException{
   Configuration cf=new Configuration();
   cf.setServletContextForTemplateLoading(sc, "/"+fileName);
   cf.setEncoding(Locale.getDefault(), "utf-8");
   Template template;
  
   template = cf.getTemplate(ftl);
   template.setEncoding("utf-8");
   String path=sc.getRealPath("/");
   System.out.println(path);//也就是静态页面的地址D:\apache-tomcat-6.0.16\webapps\test\
   BufferedWriter buff= new BufferedWriter(new FileWriter(path+htmlName));

   File htmlFile = new File(path+htmlName);

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

2,在Action中代码:

Map map=new HashMap();
    User u=new User();
    u.setId(2);
    u.setUsername("jack");
    u.setPassword("123123");
    map.put("user", u);
    map.put("message", "我的第一个Freemarker应用序程");
   try {
   FreeMarkerFactory.getIntersten().init("main.ftl", "main.html", map, "free/", getServlet().getServletContext());
return mapping.findForward("ok");
}

三,main.ftl

<html>

<body>
ID:${user.id}
用户名:${user.username}<br>
密码:${user.password}<br>
message=${message}

<a href="ListAction.do">点这里进入另一页面</a>
</body>

</html>

下面是Struts里面的配置:

<action
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="com.lch.struts.action.LoginAction">
      <forward name="lose" path="/login.jsp" />
      <forward name="ok" path="/main.html" redirect="true"/>
    </action>

分享到:
评论

相关推荐

    struts2+freemarker

    Struts2 和 Freemarker 是两个在Java Web开发中广泛应用的技术,它们共同构成了强大的MVC(模型-视图-控制器)框架。Struts2是Action框架,主要负责处理用户请求、业务逻辑控制以及与视图层的交互,而Freemarker则是...

    Freemarker分页

    4. **Freemarker模板**:在Freemarker模板中,你可以使用Struts2提供的`&lt;s:iterator&gt;`标签遍历当前页的数据,同时使用自定义的Freemarker宏或Struts2的`&lt;s:url&gt;`标签生成分页链接。例如,可以创建一个`pagination....

    spring与freemarker整合 示例源码S

    Spring 和 Freemarker 的整合是Java Web开发中常见的一种技术组合,用于实现动态页面渲染。Spring 框架作为一款强大的企业级应用框架,提供了多种视图层解决方案,其中包括对Freemarker模板引擎的支持。Freemarker则...

    在struts2中使用freemarker模版

    Struts2是一个强大的Java web应用程序框架,它提供了一种组织应用程序的方式,并且支持多种视图技术,其中之一就是FreeMarker模板。FreeMarker是一个基于模板的、声明式的语言,用于生成动态内容,尤其适合Web应用中...

    Struts2 与Freemarker 的配置方法

    - 在Freemarker模板文件中,可以使用Struts2标签库,如`s:property`来显示Action中的属性值。例如,如果LoginAction中有username属性,可以这样写:`&lt;s:property value="username" /&gt;`。 7. **运行和调试**: - ...

    FreeMarKer+jsp使用(Struts2+Servlet).

    需要注意的是,FreeMarker模板中的Struts2标签使用`&lt;@s.tagname&gt;`,而在JSP中则是`&lt;s:tagname&gt;`。此外,如果遇到中文乱码问题,可以在Struts2的配置文件(如`struts.xml`)中设置字符编码: ```xml ``` 总的来说...

    freemarker初探 附 freemarker中文手册 与 struts2 checkboxlist的研究

    &lt;s:checkboxlist list="roles" name="selectedRoles" /&gt; ``` 这里的`list`属性指定了一个列表(如Action类中的`List&lt;String&gt; roles`),`name`属性是表单字段名。当用户提交表单时,`selectedRoles`字段将包含用户...

    Freemarker教程及jar包

    6. **自定义函数和标签库**:了解如何扩展Freemarker,创建自定义的函数或导入第三方的标签库,如FreeMarker's `ftl`库。 7. **错误处理和调试**:学习如何处理模板解析和执行时可能出现的错误,以及如何进行有效的...

    Struts2整合Freemarker生成静态页面

    7. **国际化与本地化**:Struts2支持Freemarker的国际化功能,可以创建资源文件(如`message.properties`),并使用`&lt;@s.i18n...&gt;`标签来输出本地化信息。 8. **静态页面生成**:整合Struts2和Freemarker的一个常见...

    freemarker与struts2详细配置

    - **标签库**:结合Struts2的标签库,如`s:form`、`s:textfield`等,使模板更加简洁。 - **模板继承**:通过`&lt;#include&gt;`或`&lt;@import&gt;`指令,实现模板的复用和继承。 - **宏定义**:使用`&lt;#macro&gt;`定义可重用的代码...

    struts2中jsp和freemarker模板视图的案例

    2. **Struts2 JSP标签库**:`&lt;s:form&gt;`、`&lt;s:textfield&gt;`、`&lt;s:submit&gt;`等标签的使用,以及如何通过`&lt;s:property&gt;`标签显示数据。 3. **JSP和Freemarker的比较**:两者在代码组织、可维护性和开发效率上的差异。 4. ...

    Struts2与Freemarker的配置方法

    同时,可以通过`&lt;@s.action&gt;`调用Struts2的标签库,实现更复杂的交互。 8. **Freemarker的模板设计模式**:了解Freemarker的模板设计模式,如Master-Include、Macro等,有助于提高代码复用性和可维护性。 9. **...

    用freemarker生成word.zip

    &lt;a:prstGeom prst="rect"&gt; ``` 这个模板会为每个图片创建一个`&lt;w:p&gt;`(段落)元素,并通过`&lt;w:drawing&gt;`插入图片。 4. **生成Word文档** 在Java代码中,使用FreeMarker和Apache POI将...

    Struts2零配置+FreeMarker用户管理系统(UMS)

    4. **FreeMarker模板文件**:如`login.ftl`、`register.ftl`等,用于展示登录、注册等页面,通过`&lt;#if&gt;`、`&lt;#foreach&gt;`等语句进行条件判断和循环,以及`&lt;@s.action&gt;`标签调用Struts2的Action。 此外,项目中可能还...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

    SSM+websocket+freemarker+mybatis分页插件+多数据源实现

    1. **Spring(SSM中的S)**:Spring是一个开源的应用框架,它提供了一个全面的编程和配置模型,可以简化Java企业级应用的开发。在SSM框架中,Spring主要负责控制反转(IOC)和依赖注入(DI),以及服务层、数据访问...

    超完整FreeMarker中文教程,代码

    什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................

    从jsp到freemarker2.3.23

    ### 从JSP到Freemarker 2.3.23 迁移指南 #### 引言 随着技术的发展和项目需求的变化,很多基于Java Web的传统应用正面临着从JSP到Freemarker模板引擎迁移的需求。Freemarker作为一款强大的模板引擎,在性能优化和...

    Struts2+freemarker

    Struts2和FreeMarker是两种在Java Web开发中广泛使用的框架和技术。Struts2作为MVC(模型-视图-控制器)架构的一部分,主要用于处理业务逻辑和控制流程,而FreeMarker则是一个模板引擎,用于生成动态HTML或其他类型...

    Freemarker使用手册、api、中文版教程

     Designer's Guide(网上已有翻译,主要从FreeMarker 的概念上介绍)  Programmer's Guide(本文档所以翻译的部分,主要从框架的设计方面介绍)  XML Processing Guide(对XML数据模型处理的介绍)  ...

Global site tag (gtag.js) - Google Analytics