`
lanceverw
  • 浏览: 44843 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SiteMesh with Struts2 and Maven

阅读更多

About SiteMesh:

SiteMesh is a web-page layout and decoration framework and web application integration framework to aid in creating large sites consisting of many pages for which a consistent look/feel, navigation and layout scheme is required.

 

配置步骤:

1. 在项目中加入SiteMesh依赖,在项目pom.xml文件中加入如下依赖:

<dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-sitemesh-plugin</artifactId>
        <version>2.3.4.1</version>
</dependency>

 这里使用的是struts2提供的SiteMesh插件,在Maven中会自动解析依赖并加入sitemesh2.4.2.jar包,另外需要确认插件和sitemesh.jar包都放置到了/WEb-INF/lib下。

2. 配置web.xml:

按照以下代码配置filter和listener

<filter>
    <filter-name>struts-prepare</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
</filter>

<filter>
    <filter-name>struts-execute</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>


<filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts-prepare</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>struts-execute</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
</listener>
 

一定要注意filter-mapping的配置顺序,顺序不正确会导致sitemesh无法生效。

3. 加入SiteMesh配置文件:

在WEB-INF文件中新建decorators.xml, 这里顺便吐槽下SiteMesh官网的示例,官网上有一处写成了decorator.xml,我拷贝至项目中导致服务启动后一直报错,无法找到配置文件,因此正确的文件名是decorators.xml,希望对遇到这个问题的兄弟有帮助。

<?xml version="1.0" encoding="utf-8"?>

<!-- defaultdir指定装饰器文件所在的路径 -->

<decorators defaultdir="/layout">

	<!--excludes结点则指定了哪些路径的请求不使用任何模板 -->

	<excludes>

		<pattern>/entpLogin.jsp</pattern>

	</excludes>

	<!--decorator结点指定了模板的位置和文件名,通过pattern来指定哪些路径引用哪个模板 -->

	<decorator name="main" page="mode.jsp">

		<pattern>/*</pattern>

	</decorator>

</decorators

 4. 编写SiteMesh模板:

在项目中建立与decorators.xml配置文件中defaultdir="/layout"对应的layout目录,将模板文件放在这个文件夹中,示例模板文件mode.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

	pageEncoding="UTF-8"%>

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"

	prefix="decorator"%>

<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<link rel="stylesheet" type="text/css" href="css/style.css"

	media="screen">

<title>

   <decorator:title default="Welcome" /> <!--被装饰页面的Title-->

</title>

<head />

   <decorator:head /><!--被装饰页面的head-->

</head>

<body>

   <decorator:body /><!--被装饰页面的body-->

</body>

</html>

 5. 完成和参考:

根据一位兄弟的经验,如果在页面中增加了ajax主题的标签(局部刷新),则一定要在exclude pattern中添加请求的action名,否则局部刷新得到的innerHtml也会被添加上header导航条footer等装饰元。

 

SiteMesh配置基本就完成了,更深入的内容在今后讨论:

参考文献:

SiteMesh官方文档

Struts2 SiteMesh插件帮助文档

 

分享到:
评论

相关推荐

    个人测试用报表项目(sitemesh+struts2+birt)

    【标题】"个人测试用报表项目(sitemesh+struts2+birt)"涉及到的主要技术栈是Sitemesh、Struts2和BIRT,这是一个经典的Java Web开发组合,用于构建动态、数据丰富的报表系统。 Sitemesh是Java的一个开源页面布局...

    SiteMesh 开发 struts插件

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

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

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

    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

    2. **配置Struts2**:在struts.xml配置文件中,添加SiteMesh插件的配置,使Struts2知道需要使用SiteMesh进行页面装饰: ```xml &lt;constant name="struts.action.excludePattern" value="/decorator.*"/&gt; ...

    struts2与sitemesh整合所需架包

    Struts2和Sitemesh是两个非常重要的Java Web开发框架,它们在构建高效、结构化的MVC(模型-视图-控制器)应用中扮演着重要角色。Struts2作为Action框架,提供了强大的动作控制和业务逻辑处理能力,而Sitemesh则是一...

    struts2+sitemesh例子

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

    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

    sitemesh2.5源码

    **Sitemesh2 源码分析** Sitemesh 是一个开源的网页布局和装饰框架,主要用于增强Web应用的外观一致性。Sitemesh2是其第二个主要版本,它提供了更加强大和灵活的功能来帮助开发者统一网站的页面布局。在这个项目中...

    sitemesh+ spring2 + struts2 + hibernate 的 demo

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

    struts2sitemesh-freemarker 源码

    在"struts2sitemesh-freemarker"源码中,我们可以深入理解它们是如何协同工作的: 1. **Struts2框架**:Struts2的核心是Action,它负责处理用户的请求。源码中包含了Action的实现,这些Action会处理HTTP请求,并...

    Struts2开发常用jar包

    包含struts2-core-2.5.10.1.jar,struts2-jfreechart-...struts2-sitemesh-plugin-2.5.10.1.jar,struts2-spring-plugin-2.5.10.1.jar,struts2-testng-plugin-2.5.10.1.jarstruts2-tiles-plugin-2.5.10.1.jar等jar包

    struts2-sitemesh-plugin-2.1.8.1.jar

    struts2-sitemesh-plugin-2.1.8.1.jar

    Struts2-3.24集合jar

    struts2-config-browser-plugin-2.3.24.jar, ...struts2-sitemesh-plugin-2.3.24.jar, struts2-spring-plugin-2.3.24.jar, struts2-struts1-plugin-2.3.24.jar, struts2-tiles-plugin-2.3.24.jar,

    struts2-sitemesh-plugin-2.3.15.1

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

    struts2与shiro集成(实例)

    1. **添加依赖**:在项目中引入Struts2和Shiro的库文件,通常通过Maven或Gradle来管理依赖。 2. **配置Shiro**: - 创建`shiro.ini`配置文件,定义用户、角色和权限。 - 配置Shiro的Web支持,如`WebShiroFilter`...

Global site tag (gtag.js) - Google Analytics