码迷,mamicode.com
首页 > 其他好文 > 详细

sitemesh的使用

时间:2014-05-26 05:23:47      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:sitemesh

由于最近项目的原因,接触到了sitemesh。

SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。提供了一种在网站中更有效的组织页面布局的方式。

     SiteMesh设计思想是,用户发送request至服务器,服务器根据此request生成动态数据,生成网页,准备返回给客户端。就在返回前,SiteMesh进行拦截,对此网页进行解析,将title、body等部分拆解出来,套上模板后,再返回给客户端。由于SiteMesh在返回客户端的最后一步工作,此时的网页已经具备了标准的html网页格式,因此SiteMesh只需解析标准的html网页,无需考虑各个Web应用是应用了JSP、ASP,还是Velocity技术,相当灵活。

     SiteMesh使用了Decorator的设计模式。

下面我就用一个通俗易懂的例子告诉大家怎么使用它。

bubuko.com,布布扣

这个就是我这个项目的结构,jsp页面都可以随意放只要指明路径就可以了,decorators.xml放在WEB-INF下面。
首先是decorators.xml的书写:

<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/decorators">
    <!-- 用第一套模板 -->
	<decorator name="basic-theme" page="basic-theme.jsp">
		<pattern>/data/*</pattern>
	</decorator>
	<!-- 用第二套模板 -->
	<decorator name="basic-theme2" page="basic-theme2.jsp">
		<pattern>/data2/*</pattern>
	</decorator>
	<!-- 不做任何装饰 -->
	<decorator name="none">
		<pattern>/data3/*</pattern>
	</decorator>
</decorators>


你可以选择你自己的模板在page里面定义,<pattern>里面的是你要作用的页面的路径。
下面是aa.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
    我爱中国!
  </body>
</html>

aa2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
    我爱中国2!
  </body>
</html>

aa3.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jsp</title>
  </head>
  <body>
    我爱中国3!
  </body>
</html>

最重要的xml的配置:

加上下面一句

 <!-- 过滤作用,使发送给客户端的页面通过decorator装饰再返回 -->
  <filter>
  	<filter-name>sitemesh</filter-name>
  	<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>sitemesh</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

下面是装饰页面basic-theme.jsp

bubuko.com,布布扣

basic-theme2.jsp

bubuko.com,布布扣

下面来看看效果图:
下面是用了第一个装饰模板的页面图。

bubuko.com,布布扣

下面是用了第二个装饰模板的页面。

bubuko.com,布布扣

下面是没有用装饰模板的页面。

bubuko.com,布布扣

看到这里相信大家应该对sitemesh很期待了吧,赶紧自己去试试吧。这是jar包下载地址。

sitemesh.jar

sitemesh的使用,布布扣,bubuko.com

sitemesh的使用

标签:sitemesh

原文地址:http://blog.csdn.net/benjamin_whx/article/details/26583865

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!