`

Freemarker 简介

阅读更多
Freemarker 简介

      FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。



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



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



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





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



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



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



Freemarker 开发配置



     原本对freemarker了解不多,只知道是一种模板语言,我的个人网站设计时都没有考虑到使用freemarker,而是直接JSP展示。在网站上线推广过程中了解到,各个搜索引擎对动态的链接不够友好,就是说对于网站中XXX.action?name=www.tiantianfilm.com 这种格式的链接,搜索引擎不予收录,网络蜘蛛更亲奈.html的静态链接,为了便于更方便的网站推广,所以将网站集成URLREWRITER+FREEMARKER 技术改写了全站链接。大家可以去网站看下效果,www.tiantianfilm.com 细心的人还是可以看见.action的痕迹的。

    

     现在网站中有两套链接,.action的动态链接,.html的静态链接。链接的改写纯粹是为了便于网站的推广,URLREWRITER过滤器的使用,FREEMARKER模板语言开发,这两块本人将在后续文章中做详细讲解,本文将结合网站详细介绍STRUTS2+FREEMARKER的开发配置。



1、准备相应的JAR包,struts2-core- 2.0.11.2.jar,xwork-2.0.5.jar,ognl-2.6.11.jar,freemarker- 2.3.8.jar,commons-logging-1.0.4.jar



2、解压缩struts2-core-2.0.11.2.jar复制META-INF/struts-tags.tld复制到工程WEB-INF目录下,FREEMARKER中默认是不支持struts2标签的,所以需将标签库导入模板中。



3、修改WEB.XML文件

    添加STRUTS2过滤器


Java代码 
1.<filter>  
2.    <filter-name>struts2</filter-name>  
3.    <filter-class>  
4.    org.apacher.sturts2.dispatcher.FilterDispatcher  
5.    </filter-class>  
6.</filter>     
7.<filter-mapping>  
8.    <filter-name>struts2</filter-name>  
9.    <url-parttern>/*</url-parttern>  
10.</filter-mapping> 
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apacher.sturts2.dispatcher.FilterDispatcher
    </filter-class>
</filter>  
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-parttern>/*</url-parttern>
</filter-mapping>
Java代码 
1. 


注意:对于网络上所说的要想在Freemarker中使用Struts2标签必须配置一个新SERVLET


Java代码 
1.<servlet>   
2. 
3.        <servlet-name>JspSupportServlet</servlet-name>  
4.        <servlet-class>  
5.            org.apache.struts2.views.JspSupportServlet  
6.        </servlet-class>  
7.        <load-on-startup>1</load-on-startup>  
8.    </servlet> 
<servlet>

        <servlet-name>JspSupportServlet</servlet-name>
        <servlet-class>
            org.apache.struts2.views.JspSupportServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>



在本人的实践中发现这步并非必须的,此处有待深入研究





4、接下来这步应该是最重要的,配置struts.xml文件

Java代码 
1.<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">  
2.   <result name="success">/secondPage.jsp</result>  
3.</action> 
<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">
   <result name="success">/secondPage.jsp</result>
</action>

以上ACTIN配置为正常使用STRUTS2的配置,但在结合FREEMARKER中则需做如下改变


Java代码 
1.<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">  
2. 
3.   <result name="success" type="freemarker">/WEB-INF/template/secondPage.ftl</result>  
4.</action> 
<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">

   <result name="success" type="freemarker">/WEB-INF/template/secondPage.ftl</result>
</action>





注意:<reslutl>元素的type 属性必须设置为freemarker,这是因为Freemarker模板文件必须由Freemarker模板引擎来解析,而Struts2内部实现了 Freemarker模板引擎,但我们必须声明返回结果类型为freemarker才可以



经过以上四步,STRUTS2+FREEMARKER配置完成,可以进行开发应用,下面展示一个简单的实例

Java代码 
1.IndexAction.java   
2. 
3.  ……  
4.private Log log=LogFactory.getLog(IndexAction.class);  
5. private String username;  
6. private String password;  
7. /** 
8.   * 登录处理 
9.   * @return 
10.   * @throws Exception 
11.   */ 
12. public String getVediosByCategory() throws Exception{  
13.     log.info("执行了登录方法getVediosByCategory()");   
14.     return SUCCESS;  
15. }  
16.   省略相应(getter,setter方法)   
17.     … 
IndexAction.java

  ……
private Log log=LogFactory.getLog(IndexAction.class);
private String username;
private String password;
/**
   * 登录处理
   * @return
   * @throws Exception
   */
public String getVediosByCategory() throws Exception{
     log.info("执行了登录方法getVediosByCategory()");
     return SUCCESS;
}
   省略相应(getter,setter方法)
     …
创建登录页面index.jsp
Java代码 
1.<s:form action="getVediosByCategory">  
2.        登录名:<s:textfield name="username"/><br>   
3.       密码:<s:textfield name="password"/>   
4.        <s:submit value="登录" />   
5.</s:form> 
<s:form action="getVediosByCategory">
        登录名:<s:textfield name="username"/><br>
       密码:<s:textfield name="password"/>
        <s:submit value="登录" />
</s:form>
创建结果页面:user.ftl
Java代码 
1.<#--  
2.<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld "]>  
3. -->  
4.<html>  
5.    <body>  
6.    欢迎<@s.property value="username"/>登录!   
7.    </body>  
8.</html> 
<#--
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld "]>
-->
<html>
    <body>
    欢迎<@s.property value="username"/>登录!
    </body>
</html>
注意:
1、Struts2标签在JSP 页面中的写法与在Freemarker模板文件中的写法不同。
Freemarker模板文件是以<@s.tag>开始,以</@s.tag>结束
2、Freemarker模板文件的处理,通过Web容器是无法直接处理的,因此不要让用户直接访问模板 文件。在开发过程中,我们可以将Freemarker文件直接放到Web工程的 WEB-INF目录或其子目录下(用户无法访问WEB-INF目录下文件),并在相应的struts-*.xml文件中配置type="freemarker" 来输出模板

FREEMARKER接触不深,如有不足之处请大虾们多多指正
分享到:
评论

相关推荐

    Freemarker简介及标签详解大全

    Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...

    学习Freemarker简介及标签详解大全.pdf

    通过FreeMarker,Java程序只需处理数据的业务逻辑,而将数据以模型(Model)的形式传递给FreeMarker模板,由模板生成最终的页面内容。 由于FreeMarker是基于Java编写的,它的平台无关性使得它能够运行在各种Java...

    freemarker Demo 适用于freemarker初学

    1. **Freemarker简介** Freemarker是一个基于模板的开源模板语言,它与Java代码分离,使得开发者可以专注于业务逻辑,而设计师则可以专注于页面设计。它不依赖于任何特定的Web框架,可以在各种Java应用中使用。 2....

    Freemarker简介及标签详解大全.pdf

    总的来说,Freemarker是一种强大的模板引擎,提供了丰富的语言结构和指令来生成动态内容,它强调与应用程序逻辑的分离,便于页面设计人员和程序员协作,同时具备良好的扩展性和灵活性。通过Eclipse的插件,如JBoss ...

    freemarker编辑器

    一、Freemarker简介 Freemarker是一个开源的、基于Java的模板引擎,它能够将设计人员的模板与程序逻辑分离,让开发者可以专注于业务处理,而设计师则可以自由地设计页面布局。Freemarker的模板语言(FTL)非常简洁,...

    springboot集成freemarker和shiro框架

    **一、FreeMarker简介** FreeMarker是一个基于模板的Java模板引擎,它能够将数据模型渲染成HTML或者其他格式的文档。FreeMarker与JSP不同,它不依赖于Servlet API,因此更轻量级,适合用于SpringBoot这样的微服务...

    freemarker操作手册-完整freemarker教程

    1. **Freemarker简介** - Freemarker是一个开源的、轻量级的模板引擎,其核心功能是将数据模型与HTML模板结合,生成最终的网页。 - 它不依赖于任何特定的Web框架,可以灵活地应用于各种项目中。 2. **基础语法** ...

    FreeMarker中文文档.pdf下载

    ### 一、FreeMarker简介 FreeMarker是一个开放源代码的模板引擎,它能够将数据模型与表现层分离,使开发人员能够更加专注于业务逻辑的实现,而让前端工程师或设计师专注于界面的设计。这种模式有助于提高开发效率,...

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

    #### 一、FreeMarker简介 **FreeMarker**是一款功能强大的模板引擎,主要用于生成文本输出,如HTML页面、电子邮件、配置文件等。它被广泛应用于Web开发领域,能够帮助开发者轻松地将数据模型与表现层分离,从而提高...

    freemarker概述

    #### 一、FreeMarker简介 FreeMarker是一个非常流行的开源模板引擎,主要用于根据模板和数据生成文本输出。它是由Java编写而成,因此可以在任何支持Java运行环境的地方运行。FreeMarker的主要用途是生成HTML网页,...

    FreeMarker中文版word文档

    #### 一、FreeMarker简介 FreeMarker是一个强大的模板引擎,主要用于Web应用程序中生成动态HTML页面以及其他格式的文档。它支持多种编程语言如Java、Python等,并且可以在不同的环境中运行。FreeMarker的一个显著...

    Struts2 与Freemarker 的配置方法

    1. **Freemarker简介**: - Freemarker 是一个基于模板的语言,主要用于生成HTML或其他格式的文本输出。它的核心是模板文件,开发者可以使用Freemarker的语法来动态地生成内容。这些语法包括变量引用、控制结构(如...

    Myeclipse2017Ci8安装freemarker

    ### 二、Freemarker简介 Freemarker是一个用Java编写的模板引擎,它可以从HTML页面中分离业务逻辑与显示逻辑,使开发人员可以更专注于业务逻辑的实现,而将显示逻辑留给设计师处理。Freemarker支持多种数据类型,...

    freemarker实现一行两列算法

    #### 一、Freemarker简介 Freemarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。这些模板几乎可以用来生成任何格式的输出,如HTML、XML、Java源代码等。Freemarker的核心功能是将数据模型与表现层...

    freemarker中文手册.pdf

    #### 一、FreeMarker简介 - **定位与功能**:FreeMarker是一款基于模板的通用工具,旨在帮助开发者利用模板生成各类文本输出,包括但不限于HTML网页、XML文档、RTF文件及Java源代码等。 - **适用场景**:虽然最初...

    freemarker环境搭建(一)

    一、Freemarker简介 Freemarker是一个开源的Java库,它处理模板,生成基于这些模板的文本输出。这些模板可以用于生成任何类型的文本,但最常见的是HTML网页。Freemarker的核心理念是将设计和业务逻辑分开,让设计师...

    利用FreeMarker生成word文件例子

    ### FreeMarker简介 FreeMarker是一个开源的、基于模板的Java库,它将数据模型与HTML、XML或其他文本模板结合,生成动态内容。它的主要优势在于将业务逻辑与视图层分离,让开发者可以专注于内容呈现,而不用关心如何...

    基于freemarker的JAVA代码生成工具

    **Freemarker简介** Freemarker是一个强大的模板引擎,它支持动态语言,常用于生成HTML页面或者其他文本文件。在Java领域,Freemarker被广泛应用于邮件模板、动态报表生成以及代码生成等场景。它通过定义模板文件,...

    freemarker_servlet_demo

    1. **Freemarker简介** Freemarker是一个基于模板的视图技术,它与业务逻辑分离,允许开发者使用HTML样式的模板来生成输出。它的主要优点是模板语言简单易懂,不会引入过多的编程元素,有利于设计人员和开发人员的...

Global site tag (gtag.js) - Google Analytics