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 开发jar包 Struts2 SiteMesh 插件 jar包
Struts 2.0提供一个Sitemesh插件,允许在Sitemesh模板中使用Struts标记。 要使用Sitemesh需要包含Freemark,Sitemesh和Sitemesh插件库文件。 配置过滤器 如果需要使用Freemark模板文件作为装饰器文件,需要在web....
一个Struts2+Spring2.5+SiteMesh的小DEMO,仅供大家做个参考!我也刚学会。欢迎大家多交流!
struts2-sitemesh-plugin-2.2.1.1.jarstruts2
struts2-sitemesh-plugin-2.0.8.jar
struts2-sitemesh-plugin-2.1.6.jar
struts2+sitemesh例子 该例子描述了struts2+sitemesh的配置,比较实用
sitemesh+ spring2 + struts2 + hibernate 的 demo
struts2-sitemesh_入门收集struts2-sitemesh_入门收集
NULL 博文链接:https://takeme.iteye.com/blog/1716488
struts2与sitemesh整合所需的两个最新架包sitemesh-2.4.2,struts2-sitemesh-plugin-2.1.8
包含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包
struts2sitemesh-freemarker 源码
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>问题,下载后替换即可。
struts框架与sitemesh框架整合的插件,在java web开发中可以制作模板页,使自己做的网站看起来更专业
Lexer 文件需用lib目录下jflex.jar转Java文件
第10章 Struts 2的标签库,第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 ...