悠悠楠杉
网站页面
引入Sitemesh依赖:确保你的项目中已经添加了Sitemesh的依赖。如果是Maven项目,可以在pom.xml
中添加如下依赖:
xml
<dependency>
<groupId>com.opensymphony.sitemesh</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
配置Sitemesh Filter:在web.xml中添加Sitemesh的Filter配置:
xml
<filter>
<filter-name>sitemeshFilter</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemeshFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在Sitemesh中,tagRule
允许你定义如何从内容页面中提取标题、关键词、描述等元数据,并应用于统一模板。以下是一个示例,展示如何创建这样的规则:
rules
目录下创建一个 XML 文件,例如 tags.xml
。tags.xml
中定义标签和规则,以提取和设置页面的标题、关键词和描述。例如:xml
<rules xmlns="http://www.opensymphony.com/sitemesh/decorator">
<tag name="title" match="head/title" />
<tag name="keywords" match="head/meta[@name='keywords']" />
<tag name="description" match="head/meta[@name='description']" />
<tag name="content" match="body" />
</rules>
title
, keywords
, description
, 和 content
,分别对应 HTML 的 <title>
、<meta name="keywords">
、<meta name="description">
和 <body>
标签。decorator.jsp
) 定义了页面的整体结构,如头部、侧边栏和正文区域:jsp
<!DOCTYPE html>
<html lang="en">
<head>
<title><sitemesh:write property="title" /></title>
<sitemesh:write property="keywords" />
<sitemesh:write property="description" />
</head>
<body>
<sitemesh:write property="content" />
</body>
</html>
content.jsp
) 包含实际的内容:jsp
<sitemesh:layout use-decorator="decorator.jsp">
<sitemesh:write property="content">这里是正文内容...</sitemesh:write>
</sitemesh:layout>
<sitemesh:layout>
标签指定了装饰器,并通过 <sitemesh:write>
标签来插入从装饰器中定义的 content
标签所捕获的内容。tags.xml
中定义的规则从 content.jsp
中提取标题、关键词、描述等数据,并插入到 decorator.jsp
的相应位置。