`
shun6826118
  • 浏览: 14378 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2跟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过滤器

<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>


 

 注意:对于网络上所说的要想在Freemarker中使用Struts2标签必须配置一个新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文件

<action name="getVediosByCategory" class="com.wang.vedio.action.IndexAction" method="getVediosByCategory">
   <result name="success">/secondPage.jsp</result>
</action>

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

<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配置完成,可以进行开发应用,下面展示一个简单的实例

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
<s:form action="getVediosByCategory">
        登录名:<s:textfield name="username"/><br> 
       密码:<s:textfield name="password"/> 
        <s:submit value="登录" /> 
</s:form>
创建结果页面:user.ftl
<#--
<#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接触不深,如有不足之处请大虾们多多指正
  • 大小: 4.9 KB
分享到:
评论
7 楼 liuqq 2011-01-19  
    <servlet> 

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

这是让Freemarker可以使用jsp标签


6 楼 shun6826118 2011-01-06  
xql80329 写道
顶一个。最近也在关注FREEMARKER


谢谢,请接下来接续关注我的JE,在接下来的文章中介绍原本网站的设计思路FREEMARKER批量生成HTML的引擎源码贴出来
5 楼 xql80329 2011-01-06  
顶一个。最近也在关注FREEMARKER
4 楼 白糖_ 2011-01-06  
shun6826118 写道
jackerxff 写道
Struts2性能还是不行,还是改用Spring MVC吧,对Freemarker,jasperReport等支持的也很好


spring中除了AOP、IOC对其他的产品都应用不多,不过兄弟这么热情推荐肯定有他优秀的地方,以后在这块多学习学习。目前情有独钟STRUTS2的主要原因是OGNL和自定义拦截器,开发方便多了,在功能上弥补了性能的不足


spring的IOC、AOP、MVC以及security都是相当不错的;struts2的OGNL是很强大,但实际应用中只用得到其中一小部分,拦截器也相当好用,跟spring aop类似。

还有个问题,网上说freemarker对集群支持不好,我很疑惑,这是怎么子滴情况呢?
3 楼 shun6826118 2011-01-06  
jackerxff 写道
Struts2性能还是不行,还是改用Spring MVC吧,对Freemarker,jasperReport等支持的也很好


spring中除了AOP、IOC对其他的产品都应用不多,不过兄弟这么热情推荐肯定有他优秀的地方,以后在这块多学习学习。目前情有独钟STRUTS2的主要原因是OGNL和自定义拦截器,开发方便多了,在功能上弥补了性能的不足
2 楼 jackerxff 2011-01-06  
Struts2性能还是不行,还是改用Spring MVC吧,对Freemarker,jasperReport等支持的也很好
1 楼 andyfish915 2011-01-05  
不错,继续坚持下去

相关推荐

    struts2和freemarker整合

    2. **配置Struts2**:在`struts.xml`配置文件中指定FreeMarker作为视图解析器。 3. **模板目录**:设置项目中的FreeMarker模板文件存放位置。 4. **Action返回值**:Action类的execute方法返回一个结果字符串,对应...

    struts2 实现登录实例

    本实例将详细讲解如何使用Struts2实现一个简单的登录功能。 一、Struts2基础 Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并改进了其不足,如更灵活的配置、更强的拦截器机制等。Struts2的核心是...

    struts2入门教程+实例源代码

    标签"struts2实例"和"struts2源代码"表明,教程不仅包含理论讲解,还有实践案例。实例源代码可以帮助学习者更好地理解理论知识,通过实际操作加深对Struts2框架的理解。 总之,这个"struts2入门教程+实例源代码"是...

    struts详细文档讲解及实例

    本详细文档将深入讲解Struts的核心概念、架构、配置以及实战实例,帮助开发者更好地理解和应用Struts框架。 一、Struts核心概念 1. **Action**:Struts中的Action类是业务逻辑的入口点,处理用户请求,并与模型进行...

    freemarker与Struts2.0的dome

    - 当Freemarker模板中出现错误时,Struts2会捕获异常并提供相应的错误页面,这可以通过配置`&lt;struts&gt;`标签内的`&lt;global-results&gt;`和`&lt;global-exception-mappings&gt;`进行设置。 8. **性能优化** - Freemarker提供了...

    Struts2、Spring和Hibernate应用实例

    "Struts2.doc"则可能讲解了Struts2框架的使用,包括Action配置、拦截器、结果类型等内容。 总的来说,这三个框架的结合使用,可以帮助开发者构建出健壮、高效的Java Web应用,对于提升开发效率和软件质量有着显著...

    STRUTS2站点,STRUTS2学习实例1

    - 书籍:《精通Struts2》、《Struts2实战》等书籍深入讲解Struts2原理和实践。 通过以上介绍,我们对Struts2有了基本了解。"STRUTS2学习实例1"可能包含的就是这些基础知识的实践,通过实际操作,你可以更好地掌握...

    freemarker+struts2+ibatis入门学习摘要

    "freemarker+struts2+ibatis入门学习摘要" 这个标题揭示了本文档将围绕三个核心Java技术框架进行讲解:FreeMarker、Struts2和iBatis。这些是Java Web开发中常用的技术,它们分别负责视图层、控制层和数据访问层的...

    struts2 hibernate spring整合入门(附实例源码及jarbao--用户名字段的操作)

    在整合中,Spring管理Struts2的Action和Hibernate的SessionFactory,通过配置文件(如applicationContext.xml)进行实例化和配置。此外,Spring的AOP可以用于实现全局事务管理,确保数据的一致性。 在实际应用中,...

    s2sh struts2 struts1 原理部分详细讲解及流程图

    5. **配置灵活性**:Struts2的配置文件(struts.xml)允许动态配置,甚至可以在运行时修改,提供了更多的灵活性。 ### 流程图 Struts1和Struts2的工作流程可以用流程图来直观表示: 1. 用户发送HTTP请求到服务器...

    Struts2框架程序示例

    本示例将深入讲解Struts2框架的核心概念、主要特性以及如何在实际项目中运用。 首先,Struts2框架的出现是为了弥补Struts1的一些不足,提供了更强大的动作(Action)处理和更灵活的视图(View)渲染。它的核心组件...

    struts2应用实例

    在讲解Struts2之前,我们需要理解MVC模式的基本概念。MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型处理业务逻辑,视图负责展示数据,而控制器接收用户请求并协调...

    深入浅出Struts2.pdf

    总之,“深入浅出Struts2”这份资料全面讲解了Struts2的各个关键组成部分,包括其工作原理、配置方式、拦截器机制、OGNL表达式、插件使用以及与Spring的整合,是学习和掌握Struts2框架的宝贵资源。通过深入学习和...

    Struts2 登录验证实例

    在"Struts2登录验证实例"中,我们将探讨如何利用Struts2框架实现用户身份验证,这是一个基本的安全功能,对任何Web应用都至关重要。下面我们将深入讲解相关知识点。 **1. Struts2框架简介** Struts2是Apache软件...

    struts2入门学习源码

    在压缩包中,`struts2.xls`可能是包含Struts2学习笔记的电子表格,详细讲解了框架的各个方面,包括配置、拦截器、结果类型等。`struts-2.3.15.3`很可能是Struts2的特定版本库,包含所有必要的JAR文件和文档,可供...

    struts2 学习及讲解文档完美版

    其中,`lib`目录下的几个重要JAR文件如`struts2-core-2.1.6.jar`(核心库)、`freemarker-2.3.13.jar`(用于UI标签的FreeMarker模板引擎)、`commons-logging-1.0.4.jar`(日志处理)、`ognl-2.6.11.jar`(对象图...

    Struts2实战(Struts2 In Action中文版)

    1. **Struts2基础**:介绍Struts2的基本概念,包括配置文件、Action类、结果类型和视图解析。 2. **OGNL表达式语言**:Struts2使用OGNL(Object-Graph Navigation Language)进行数据绑定和表达式操作,学习如何...

    spring,struts2,hibernate集成实例

    - 配置Spring:编写配置文件,定义Bean,设置数据源、事务管理器,以及Struts2与Hibernate的整合配置。 - 配置Struts2:创建struts.xml配置文件,定义Action类和结果视图,设置拦截器栈。 - 配置Hibernate:配置...

    struts2教程(完全版)

    本教程将深入讲解Struts2的基础知识,帮助初学者快速掌握这一强大的框架。 一、Struts2的准备工作 1. **安装与实例**: 在开始使用Struts2之前,需要下载Struts2的发行包,例如`struts-2.1.6-all.zip`。解压缩后...

    struts2

    本教材《Struts2》将深入讲解上述概念,并通过实例演示如何创建一个简单的Struts2应用,包括Action的编写、配置文件的设置、拦截器的使用等。读者可以通过阅读文档,结合实践,逐步掌握Struts2的精髓,提升自己的...

Global site tag (gtag.js) - Google Analytics