`
wtnhwbb
  • 浏览: 165823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 2.0 整合Sitemesh

阅读更多

概述

        Struts 2.0提供一个Sitemesh插件,允许在Sitemesh模板中使用Struts标记。

        要使用Sitemesh需要包含Freemark,Sitemesh和Sitemesh插件库文件。

配置过滤器

如果需要使用Freemark模板文件作为装饰器文件,需要在web.xml文件中添加如下配置:

xml 代码
  1. <filter>  
  2.     <filter-name>struts-cleanupfilter-name>  
  3.     <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUpfilter-class>  
  4. filter>  
  5. <filter>  
  6.     <filter-name>sitemeshfilter-name>  
  7.     <filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilterfilter-class>  
  8. filter>  
  9. <filter>  
  10.     <filter-name>strutsfilter-name>  
  11.     <filter-class>org.apache.struts2.dispatcher.FilterDispatcherfilter-class>  
  12. filter>  
  13.   
  14. <filter-mapping>  
  15.     <filter-name>struts-cleanupfilter-name>  
  16.     <url-pattern>/*url-pattern>  
  17. filter-mapping>  
  18. <filter-mapping>  
  19.     <filter-name>sitemeshfilter-name>  
  20.     <url-pattern>/*url-pattern>  
  21. filter-mapping>  
  22. <filter-mapping>  
  23.     <filter-name>strutsfilter-name>  
  24.     <url-pattern>/*url-pattern>  
  25. filter-mapping>  

        注意ActionContextCleanUp过滤器必须在FilterDispatcher之前配置,ActionContextCleanUp的主要 功能是通知FilterDispatcher执行完毕不要清除ActionContext,以便sitemesh装饰器可以访问Struts值堆栈。

配置装饰器

        在WEB-INF目录下创建一个decorator.xml文件,指定装饰器需要匹配哪些文件,下述示例指定main.flt将装饰所有的jsp文件:

xml 代码
  1. <!--sp-->xml version="1.0" encoding="ISO-8859-1"?>  
  2.   
  3. <decorators defaultdir="/decorators">  
  4.     <!-- Any urls that are excluded will never be decorated by Sitemesh -->  
  5.     <excludes>  
  6.         <pattern>/exclude.jsppattern>  
  7.         <pattern>/exclude/*pattern>  
  8.     excludes>  
  9.   
  10.     <decorator name="main" page="main.ftl">  
  11.         <pattern>/*.jsppattern>  
  12.     decorator>  
  13. decorators>  

        如果需要自定义装饰器映射器,需要在WEB-INF目录下创建一个sitemesh.xml文件(通常从发布包中拷贝过来更改相应部分)。这一步骤是可选 的,通常缺省的配置就能够满足要求。

定义装饰器文件

        缺省情况下,sitemesh假定装饰器文件保存在应用上下文根路径下的decorators目录下,如果采用如上配置,装饰器文件应该是ftl格式,如 果需要使用其他格式,需要更改过滤器配置。

访问被装饰页面

        在Freemark装饰器文件中,可以通过如下变量访问被装饰页面的相关部分:

xml 代码
  1. ${title}......访问被装饰页面的标题。   
  2.   
  3. ${head}......访问被装饰页面的头信息,标题除外。   
  4.   
  5. ${body}......访问被装饰页面的body内容。   
  6.   
  7. ${page.properties.meta.author}......访问被装饰页面的属性。   

内部变量

Freemark和Struts整合提供如下内部变量:

xml 代码
  1. stack......值堆栈本身,示例${stack.findString('ognl expr')}   
  2.   
  3. action......Action实例   
  4.   
  5. response/res......响应对象   
  6.   
  7. request/req......请求对象   
  8.   
  9. session......会话对象   
  10.   
  11. application......ServletContext   
  12.   
  13. base......请求的上下文路径   
 

下面介绍访问应用程序各范围属性的语法示例:

Application范围

假定Application范围有一个属性 myApplicationAttribute :

java 代码
  1. <#if Application.myApplicationAttribute?exists>   
  2.      ${Application.myApplicationAttribute}   
  3. if>  

java 代码
  1. <@s.property value="%{#application.myApplicationAttribute}" />  
Session范围

假定会话范围内有一个属性mySessionAttribute:

java 代码
  1. <#if Session.mySessionAttribute?exists>   
  2.      ${Session.mySessionAttribute}   
  3. if>  

java 代码
  1. <@s.property value="%{#session.mySessionAttribute}" />   
Request范围

假定请求范围有一个属性myRequestAttribute

java 代码
  1. <#if Request.myRequestAttribute?exists>   
  2.       ${Request.myRequestAttribute}   
  3. if>  

java 代码
  1. <@s.property value="%{#request.myRequestAttribute}" />  
Request参数

假定请求参数myParameter

java 代码
  1. <#if Parameters.myParameter?exists>   
  2.      ${Parameters.myParameter}   
  3. if>  

or

java 代码
  1. <@s.property value="%{#parameters.myParameter}" />  
Context参数

假定框架上下文有一参数myContextParam

java 代码
  1. ${stack.findValue('#myContextParam')}  

java 代码
  1. <@s.property value="%{#myContextParam}" />   
评论

相关推荐

    Struts2.0 与 sitemesh的例子

    在Struts2与Sitemesh的整合中,我们通常会在Struts2的配置文件中添加Sitemesh的拦截器,这样,每次Struts2处理完Action返回的结果后,Sitemesh会自动对结果页面进行装饰。这样不仅简化了开发者的工作,也让网站的...

    Struts2整合SiteMesh

    将Struts2与SiteMesh整合,可以实现更加统一和规范化的网站外观,并减少重复代码。 整合Struts2和SiteMesh主要涉及以下几个步骤: 1. **添加依赖**:首先,在项目中引入SiteMesh的jar包。如果使用的是Maven,可以...

    Struts2整合SiteMesh技巧

    ### Struts2整合SiteMesh技巧 #### 概述 在Web开发中,为了实现页面布局的统一性与可维护性,通常会采用一种称为“页面布局管理”的技术。Struts2框架提供了对SiteMesh的支持,这是一种强大的页面布局管理工具。...

    struts2-sitemesh-plugin-2.2.1.1.jarstruts2

    `struts2-sitemesh-plugin-2.2.1.1.jar`是Struts2框架与Sitemesh集成的插件,使得Struts2应用能够利用Sitemesh的功能来美化和规范化页面布局。 **Struts2框架** Struts2的核心功能包括动作映射、结果处理、数据绑定...

    struts2-sitemesh-plugin-2.0.8.jar

    struts2-sitemesh-plugin-2.0.8.jar

    struts2-sitemesh-plugin-2.1.6.jar

    struts2-sitemesh-plugin-2.1.6.jar

    struts2与sitemesh整合所需架包

    要将Struts2和Sitemesh整合,我们需要两个关键的组件:Sitemesh框架本身(在这个例子中是版本2.4.2)和Struts2的Sitemesh插件(版本2.1.8)。这两个组件的集成使得Struts2能够自动将Sitemesh应用于其返回的页面,...

    struts2+sitemesh例子

    Struts2和Sitemesh是两个非常流行的Java Web开发框架,它们在构建高效、结构化的MVC(模型-视图-控制器)应用中起到关键作用。Struts2是一个基于MVC设计模式的开源框架,主要用于控制应用程序的流程,而Sitemesh则是...

    struts2.0必可不少的包

    - `struts2-sitemesh-plugin`: 集成了Sitemesh,用于页面布局和装饰,可以统一网站的外观和风格。 5. **动作(Action)支持**: - `struts2-json-plugin`: 提供JSON支持,使Action可以直接返回JSON格式的数据,...

    Struts2.0+Hibernate+Spring注册登录系统

    Struts2.0+Hibernate+Spring是一个经典的Java Web开发技术栈,这一体系结构被广泛应用于构建企业级的Web应用程序,尤其是那些需要高效数据管理、强大业务逻辑和灵活控制层的系统。在这个“Struts2.0+Hibernate+...

    struts2-sitemesh-plugin-2.1.8.1.jar

    struts2-sitemesh-plugin-2.1.8.1.jar

    struts2-sitemesh-plugin-2.3.15.1

    解决 java.lang.NoSuchFieldException: DEFAULT_PARAM&gt;问题,下载后替换即可。

    struts2-sitemesh-plugin-2.0.6.jar

    struts框架与sitemesh框架整合的插件,在java web开发中可以制作模板页,使自己做的网站看起来更专业

    北大青鸟struts2.0培训基础教程

    6. **集成性**:Struts2可以与Spring、SiteMesh和Tiles等其他框架无缝集成,提高开发效率。 7. **OGNL集成**:OGNL(Object-Graph Navigation Language)是Struts2中的默认表达式语言,提供了强大的数据访问和操作...

    一个Struts2+Spring2.5+SiteMesh的小DEMO

    Struts2、Spring2.5 和 SiteMesh 是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的Web应用程序架构。在这个小DEMO中,我们将深入探讨这三个框架的集成和工作原理。 **Struts2** 是一个基于MVC...

    struts2 +sitemesh:实例学习

    Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大 量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的...

    SiteMesh 开发 struts插件

    而Struts2 SiteMesh 插件则使得整合 SiteMesh 和 Struts2 框架变得更加方便,让开发者可以充分利用 SiteMesh 的功能来提升用户体验。 首先,我们需要理解 Struts2 是一个基于 Model-View-Controller(MVC)设计模式...

Global site tag (gtag.js) - Google Analytics