`

《研磨struts2》第二十章 整合SiteMesh 之 20.3 整合Struts2与SiteMesh

 
阅读更多

在Struts2中使用SiteMesh的时候,SiteMesh是以Struts2插件的形式出现的。

单独使用SiteMesh需要做好多事情:准备资源、引用过滤器、准备模板页面、准备被装饰页面、结合模板页面和被装饰页面。

在整合Struts2与SiteMesh的时候,准备模板页面和准备被装饰页面基本上没有变化,这里就不过多叙述了。接下来从其他几个方面,包括:准备资源、引用过滤器、结合模板页面和被装饰页面,来继续学习。

20.3.1准备资源

       这里的准备资源和单独使用SiteMesh稍有不同,接下来把需要的东西一一拷贝到我们学习Struts2的Web项目上去:

  • SiteMesh的jar包:把sitemesh-blank\WEB-INF\lib\sitemesh-2.4.1.jar拷贝到Web工程的构建路径下,WebContent\WEB-INF\lib包下面。
  • SiteMesh插件:把struts-2.1.8.1\lib\struts2-sitemesh-plugin-2.1.8.1.jar拷贝到Web工程的构建路径下,WebContent\WEB-INF\lib包下面。
  • SiteMesh的自定义标签:把sitemesh-blank\WEB-INF\lib包下的所有tld文件拷贝到Web工程的WEB-INF文件夹下。注意,前面单独使用SiteMesh的时候,是把tld文件拷贝到WEB-INF\lib文件夹下的。
  • 模板页面和被装饰页面的结合:把sitemesh-blank\WEB-INF\decorators.xml拷贝到Web工程的WEB-INF文件夹下。

20.3.2引用过滤器

ings��-i�� �,� amily:Wingdings'>Ø         sitemesh-blank\WEB-INF\ decorators.xml:定义模板页面和被装饰页面如何结合。

 

20.2.2拷贝资源

       引用SiteMesh的过滤器本身和前面示例做的差不多,就是把相关的过滤器的配置,拷贝到web.xml中,但要注意过滤器的关系:

  • FilterDispatcher一定要有,通常出现在最后。
  • 如果出现了SiteMesh这种过滤器,需要在SiteMesh之前加上ActionContextCleanUp过滤器。

所以,不但要引用SiteMesh过滤器,还要在它之前引用Struts2的ActionContextCleanUp过滤器,以<filter-mapping>元素出现的顺序为准,应该顺序配置ActionContextCleanUp、SiteMesh、FilterDispatcher这几个过滤器,示例代码如下:

 

java代码:
  1. <filter>  
  2.     <filter-name>Struts2-action-cleanup</filter-name>  
  3.     <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>  
  4. </filter>  
  5. <filter-mapping>  
  6.     <filter-name>Struts2-action-cleanup</filter-name>  
  7.     <url-pattern>/*</url-pattern>  
  8. </filter-mapping>  
  9. <filter>  
  10.     <filter-name>sitemesh</filter-name>  
  11.     <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>  
  12. </filter>  
  13. <filter-mapping>  
  14.     <filter-name>sitemesh</filter-name>  
  15.     <url-pattern>/*</url-pattern>  
  16. </filter-mapping>  
  17. <filter>  
  18.     <filter-name>Struts2</filter-name>  
  19.     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  20. </filter>  
  21. <filter-mapping>  
  22.     <filter-name>Struts2</filter-name>  
  23.     <url-pattern>/*</url-pattern>  
  24. </filter-mapping>  

20.3.3结合模板页面和被装饰页面

       模板页面和被装饰页面基本上没有变化,只是模板页面引用SiteMesh的tld文件的路径,原来是“WEB-INF\lib\sitemesh-decorator.tld”,现在应该去掉lib,修改成“WEB-INF\sitemesh-decorator.tld”。

现在要使用Struts2的Action,先来准备一个简单的Action,没有什么功能,只是跳转到后继的jsp。示例代码如下:

 

java代码:
  1. public class SiteMeshAction extends ActionSupport {  
  2.     public String execute() throws Exception {  
  3.         return SUCCESS;  
  4.     }  
  5. }  

接下来到struts.xml中配置这个Action,示例代码如下:

 

java代码:
  1.  <package name="helloworld" extends="struts-default">  
  2.      <action name="sitemeshAction" class="cn.javass.sitemesh.SiteMeshAction">  
  3. <result>/index.jsp</result>  
  4. lt;/action>  
  5.  </package>  

       decorators.xml文件也不用变化,因为原来配置的装饰模式就是“/*”,意思是当前web应用中所有的URL指向的页面都会受到装配。

       运行测试一下,URL为: http://localhost:9080/helloworld/sitemeshAction.action,会得到与单独使用SiteMesh一样的结果,这样说明Struts2整合SiteMesh成功。

 

 

 

私塾在线网站原创《研磨struts2》系列

转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4180.html

欢迎访问http://sishuok.com获取更多内容

2
10
分享到:
评论

相关推荐

    Struts2整合SiteMesh

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

    Struts2整合SiteMesh技巧

    通过整合Struts2与SiteMesh,开发者可以在保持Struts2框架的灵活性的同时,利用SiteMesh实现一致且美观的页面布局设计。 #### 配置基础 要使Struts2与SiteMesh协同工作,首先需要确保项目中包含了以下三个库文件:...

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

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

    struts2-sitemesh-plugin-2.2.1.1.jarstruts2

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

    struts2与sitemesh整合所需架包

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

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    第10章 Struts 2的标签库,第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 ...

    struts2+sitemesh例子

    **Struts2与Sitemesh集成** 将Struts2和Sitemesh集成,可以充分利用两者的优点,创建既有良好结构又美观的Web应用。集成过程主要包括以下步骤: 1. 添加Sitemesh的依赖到项目中,通常在Maven的pom.xml文件中添加...

    struts2-2拦截器与SiteMesh

    struts2-2拦截器与SiteMeshstruts

    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

    SiteMesh 开发 struts插件

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

    Struts2.0 与 sitemesh的例子

    将Struts2.0与Sitemesh整合,可以让Struts2处理业务逻辑,而Sitemesh负责页面的装饰和布局。这样,开发者可以专注于业务代码编写,而无需关心页面的样式细节。通常,整合步骤包括: 1. **添加依赖**:在项目中引入...

    struts2sitemesh-freemarker 源码

    在源码中,可以看到Sitemesh配置和过滤器的实现,以及如何与Struts2整合,确保每个Action的结果都能被正确装饰。 3. **FreeMarker模板引擎**:FreeMarker是一个基于模板的语言,它与Java代码分离,使得视图层更加...

    Struts2+Spring+Hibernate+sitemesh

    Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐 的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX 控件播放音乐的).

    struts2+spring +hibernate 整合应用实现用户登陆。

    【Struts2+Spring+Hibernate 整合应用】 在Java Web开发中,Struts2、Spring和Hibernate是三个非常重要的开源框架。它们各自解决了不同层面的问题,而将它们整合在一起可以构建出高效、灵活和可维护的Web应用程序。...

    freemarker 与sitemesh 整合例子

    这些文件可以作为学习和实践Freemarker与Sitemesh整合的起点,帮助开发者理解如何在实际项目中应用这两种技术。 通过这样的整合,开发者可以利用Freemarker的强大模板语言处理动态内容,同时借助Sitemesh保持页面的...

    spring-boot-sitemesh源码整合

    spring-boot-sitemesh 源码整合

    struts2-sitemesh-plugin-2.0.6.jar

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

    sitemesh+ spring2 + struts2 + hibernate 的 demo

    在SSH2集成中,Sitemesh可以用来装饰Struts2的Action结果页面,确保每个页面都有统一的头部、底部和侧边栏等元素。 **Spring框架**: Spring的核心是IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented ...

Global site tag (gtag.js) - Google Analytics