使用sitemesh的步骤
1. 添加jar文件到classpath
2. 在web.xml中增加过滤器
<!-- Sitemesh --> <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3. 在/WEB-INF中创建decorator.xml文件
<decorators defaultdir="/decorators"> <decorator name="main" page="main.jsp"> <pattern>/*</pattern> </decorator> </decorators>
defaultdir:指定了装饰页面的存放路径
在这里可以使用<decorator>标签配置多个装饰器
4. 另外有一个可选的sitemesh.xml文件,放在/WEB-INF目录下。如果没用,则默认读取sitemesh.jar文件中的sitemesh-default.xml文件。这个文件在jar:com.opensymphony.module.sitemesh.factory包中。
在这个文件中可以指定使用那些mapper对象来装饰页面,也可以扩展自己的Mapper类。 sitemesh自带的mapper类放在com.opensymphony.module.sitemesh.mapper包中,可以供大家选择使用。
5. 这里是今天学习备注的重点 ,com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper 这个类的使用。
在sitemesh-default.xml中,可以看到已经声明了这个类,并且可以通过查阅API来获得其使用方法。
在这个文件中可以看到配置了这个类的两个属性
property.1=meta.decorator property.2=decorator
通过查阅API可以找到,只要html文件中包含
<meta name="decorator" content="decoratorname"> <meta name="meta.decorator" content="decoratorname">
就可以应用相应的装饰器,而不必在decorator.xml中使用<pattern>来规定哪些页面使用哪些装饰器。
<decorators defaultdir="/decorators"> <decorator name="main" page="main.jsp"> </decorator> </decorators>
6. 一点联想:
在com.opensymphony.module.sitemesh.mapper包中我看到了一个叫CookieDecoratorMapper的类,话说可以在用户的cookie中指定装饰器的名字。
这样我们可以通过扩展来实现基于用于的个人喜好设定,用户可以自己选择需要应用的装饰器(有点类似QQ空间选择个性主页模板),把装饰器的的名称存放起来,当浏览页面的时候自动去读取这个值以实现主页风格的动态切换。只是有个这个想法,还没有付诸行动,有兴趣的朋友可以试试看。
相关推荐
b.<decorator:title/>这个标签会找到被装饰页面的title(<title></title>标签内)内容填入, <decorator:head/>找到被装饰页面的head(<head></head>标签内)内容填入,<decorator:body/>找到被装饰页面的body(<body></...
<decorator name="default" page="common/decorator.jsp"> <pattern>/*</pattern> </decorator> </decorators> ``` decorator.jsp是实际的页面模板,其中可以包含全局的HTML元素,如页头、页脚等。 4. **创建...
<param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> ``` - **使用Freemarker模板**: - 创建Freemarker模板文件...
<title><decorator:title /></title> </head> <body> <decorator:body /> </body> </html> ``` 在这个例子中,`<decorator:title />` 和 `<decorator:body />` 标签会由 Sitemesh 替换为装饰器模板中的相应内容。 ...
<s:decorator name="default"> <jsp:body> <!-- your content here --> </jsp:body> </s:decorator> ``` 这样,Sitemesh 就知道应该使用哪个装饰器来包装当前页面的内容。 5. **自定义装饰规则**: 如果...
<title><decorator:title default="装饰器页面"/></title> <decorator:head/> </head> <body> sitemesh的例子<hr> <decorator:body/> <hr>chen56@msn.com </body> </html> ``` **第五步:创建被装饰页面** ...
<title><decorator:title default="装饰器页面..." /></title> <decorator:head /> </head> <body> sitemesh的例子<hr> <decorator:body /> <hr>chen56@msn.com </body> </html> ``` 最后,创建一个待装饰...
<decorator:content/> </body> </html> ``` 2. `sitemesh-decorator.tld`: 这个文件定义了装饰器(Decorator)的标签,如`<decorator:include>`和`<decorator:head>`等,它们用于在装饰器模板中指定要插入页面...
<mapping decorator="/default-decorator.html"/> ``` 当没有其他的路径匹配时,将使用这个默认装饰器。 - **针对不同路径的不同装饰器**: ```xml <mapping path="/about" decorator="/WEB-INF/views/...
<layout:decorator name="default"> <layout:content/> </layout:content> ``` 这段代码表示该 JSP 页面将使用名为 `default` 的装饰器,并将页面内容传递给装饰器的 `<layout:content>` 标签。 ### 4. 自定义...
<filter-name>Sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>Sitemesh</filter-name> <url-pattern>/*</...
<title><decorator:title default="装饰器页面..." /></title> <decorator:head /> </head> <body> sitemesh 的例子<hr> <decorator:body /> <hr>chen56@msn.com </body> </html> ``` 最后,创建一个普通的...
1. **装饰模板**:`default.jsp`模板通常包含页头、页脚、侧边栏等通用部分,并通过`<@page decorator="true">`标签来标记内容区,如下: ```jsp <%@ taglib uri=...
<decorator name="main" page="main.ftl"> <pattern>/*</pattern> </decorator> </decorators> ``` 这里,`/decorators/main.ftl`指定了布局文件的位置。 #### 自定义装饰器映射 如果需要进一步定制装饰器的...
<title><sitemesh:property name="title"/></title> </head> ``` 2. **装饰器应用**: 装饰器中,用`sitemesh:content`标签来指定内容页面的主体部分: ```jsp <body> <div id="header"> <!-- 页头内容 --> ...
sitemesh 使用例子。 <?xml version="1.0" encoding="utf-8"?> <decorators defaultdir="/decorators"> ... <decorator name="index" page="index.jsp"> <pattern>/*</pattern> </decorator> </decorators>
<title><decorator:title default="装饰器页面"/></title> <decorator:head/> </head> <body> sitemesh的例子<hr> <decorator:body/> <hr>chen56@msn.com </body> </html> ``` 这个装饰器页面定义了页面...