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,这是一个经典的Java Web开发组合,用于构建动态、数据丰富的报表系统。 Sitemesh是Java的一个开源页面布局...
而Struts2 SiteMesh 插件则使得整合 SiteMesh 和 Struts2 框架变得更加方便,让开发者可以充分利用 SiteMesh 的功能来提升用户体验。 首先,我们需要理解 Struts2 是一个基于 Model-View-Controller(MVC)设计模式...
Struts2、Spring2.5 和 SiteMesh 是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的Web应用程序架构。在这个小DEMO中,我们将深入探讨这三个框架的集成和工作原理。 **Struts2** 是一个基于MVC...
### Struts2整合SiteMesh技巧 #### 概述 在Web开发中,为了实现页面布局的统一性与可维护性,通常会采用一种称为“页面布局管理”的技术。Struts2框架提供了对SiteMesh的支持,这是一种强大的页面布局管理工具。...
`struts2-sitemesh-plugin-2.2.1.1.jar`是Struts2框架与Sitemesh集成的插件,使得Struts2应用能够利用Sitemesh的功能来美化和规范化页面布局。 **Struts2框架** Struts2的核心功能包括动作映射、结果处理、数据绑定...
2. **配置Struts2**:在struts.xml配置文件中,添加SiteMesh插件的配置,使Struts2知道需要使用SiteMesh进行页面装饰: ```xml <constant name="struts.action.excludePattern" value="/decorator.*"/> ...
Struts2和Sitemesh是两个非常重要的Java Web开发框架,它们在构建高效、结构化的MVC(模型-视图-控制器)应用中扮演着重要角色。Struts2作为Action框架,提供了强大的动作控制和业务逻辑处理能力,而Sitemesh则是一...
Struts2和Sitemesh是两个非常流行的Java Web开发框架,它们在构建高效、结构化的MVC(模型-视图-控制器)应用中起到关键作用。Struts2是一个基于MVC设计模式的开源框架,主要用于控制应用程序的流程,而Sitemesh则是...
struts2-sitemesh-plugin-2.0.8.jar
struts2-sitemesh-plugin-2.1.6.jar
**Sitemesh2 源码分析** Sitemesh 是一个开源的网页布局和装饰框架,主要用于增强Web应用的外观一致性。Sitemesh2是其第二个主要版本,它提供了更加强大和灵活的功能来帮助开发者统一网站的页面布局。在这个项目中...
在SSH2集成中,Sitemesh可以用来装饰Struts2的Action结果页面,确保每个页面都有统一的头部、底部和侧边栏等元素。 **Spring框架**: Spring的核心是IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented ...
在"struts2sitemesh-freemarker"源码中,我们可以深入理解它们是如何协同工作的: 1. **Struts2框架**:Struts2的核心是Action,它负责处理用户的请求。源码中包含了Action的实现,这些Action会处理HTTP请求,并...
包含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-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,
解决 java.lang.NoSuchFieldException: DEFAULT_PARAM>问题,下载后替换即可。
1. **添加依赖**:在项目中引入Struts2和Shiro的库文件,通常通过Maven或Gradle来管理依赖。 2. **配置Shiro**: - 创建`shiro.ini`配置文件,定义用户、角色和权限。 - 配置Shiro的Web支持,如`WebShiroFilter`...