sitemesh主要有三个主要文件:sitemesh.xml,decorators.xml和做布局用的jsp页面。

一、sitemesh.xml

对于sitemesh.xml这个文件,官方文档上说它不是必须的。sitemesh总是会有一个份默认的配制。如果你打算提供自己的sitemesh.xml,也最好放在web-inf目录下,目前我还没有找到该文件的位置是否可配制以及在何处配制的说明。从sitemesh.xml文件内容上看它主要负责配制3方面的信息:1.装饰器描述文件decorators.xml的存放位置和名称,默认是/WEB-INF/decorators.xml。2.page-parsers的配制。对这一项的不配制目前还是很清楚,大概是指明解析页面使用的类吧。其中字符集的设定可能需要注意,否则可能会出现乱码问题吧?个人猜测。3.decorator-mappers,目前尚不清楚用途。下面是官方提供的一份配制样本.

[xhtml] view
plain
copy

  1. <sitemesh>
  2. <property name="decorators-file" value="/WEB-INF/decorators.xml" />
  3. <excludes file="${decorators-file}" />
  4. <page-parsers>
  5. <parser content-type="text/html"
  6. class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
  7. <parser content-type="text/html;charset=ISO-8859-1"
  8. class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
  9. </page-parsers>
  10. <decorator-mappers>
  11. <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
  12. <param name="config" value="${decorators-file}" />
  13. </mapper>
  14. </decorator-mappers>
  15. </sitemesh>

二、decorators.xml

decorators.xml是配制的核心,它主要用来描述一系列的decorator.每一个decorator需要指明实际用来装饰的JSP页面是哪一个(在这个页面中往往会出现<decorator:head /><decorator:body /><decorator:title /><decorator:getProperty /><decorator:usePage />这些装饰标签),以及这个decorator要装饰的页面有哪些(也就是一系列的url pattern)。下面是oobbs系统的decorators.xml.在它里有两个decorator.分别对应该系统的用户页面和管理页面。需要特别说明的是defaultdir是用来指明装饰文件所在的默认文件夹,如果指定了这个文件夹,那么<decorator/>标签中的page属性中如果填入相对路径,它将会从defaultdir开始查找。在下面的例子中,由于page都给出的是绝对路径,因此defaultdir并不起作用。

[xhtml] view
plain
copy

  1. <decorators defaultdir="/decorators">
  2. <excludes>
  3. <pattern>/40*.jsp</pattern>
  4. <pattern>/*ajax=true*</pattern>
  5. <pattern>/scripts/dojo/*</pattern>
  6. <pattern>/struts/dojo/*</pattern>
  7. <pattern>/resources/*</pattern>
  8. <pattern>/admin/login.jsp</pattern>
  9. <pattern>/site/login.jsp</pattern>
  10. </excludes>
  11. <decorator name="adminDecorator" page="/admin/decorator.jsp">
  12. <pattern>/admin/*</pattern>
  13. </decorator>
  14. <decorator name="siteDecorator" page="/site/decorator.jsp">
  15. <pattern>/site/*</pattern>
  16. </decorator>
  17. </decorators>

三.做布局用的jsp页面

decorators.xml的配制中都会指向一些这样的页面。这些页面是一些普通的jsp页面,主要是用来布局的。像header,footer这样的框架部分用<jsp:include page="xxx.jsp" />引入,需要被装饰的部分用decorator标签替换就可以了。下面是一个样本。其中<decorator:body/>就代表被装饰页面的body部分,在生成html时,这部分会被sitemesh动态替换掉。

[xhtml] view
plain
copy

  1. <%@ include file="/admin/taglibs.jsp"%>
  2. <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"  prefix="decorator"%>
  3. <%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  8. <title><decorator:title/></title>
  9. <link rel="stylesheet" type="text/css" href="<c:url value='/admin/styles/layout.css'/>" />
  10. </head>
  11. <body>
  12. <div id="container">
  13. <div id="header">
  14. <jsp:include page="header.jsp" />
  15. </div>
  16. <div id="menu">
  17. <jsp:include page="menu.jsp" />
  18. </div>
  19. <div id="mainContent">
  20. <div id="sidebar">
  21. <jsp:include page="sidebar.jsp" />
  22. </div>
  23. <div id="content">
  24. <decorator:body/>
  25. </div>
  26. </div>
  27. <div id="footer">
  28. <jsp:include page="footer.jsp" />
  29. </div>
  30. </div>
  31. </body>
  32. </html>

web项目学习之sitemesh的更多相关文章

  1. java maven、springmvc、mybatis 搭建简单Web项目学习笔记

    前言: 空余的时间,学学 Java,没准哪天用的到: 环境搭建折腾了好几天,总算搞顺了,也做个学习笔记,以防后面会忘记: 一.安装文件及介绍 JDK:jdk1.8.0 77 eclipse-maven ...

  2. web项目学习之spring-security

    转自<http://liukai.iteye.com/blog/982088> spring security功能点总结: 1. 登录控制 2. 权限控制(用户菜单的显示,功能点访问控制) ...

  3. Web项目学习

    首先配好jdk,tomcat,下载eclipse,下载bootstrap模板,进行JDBC连接 创建项目 打开Eclipse,选择左上角的File->NEW->最后一个other,选择如下 ...

  4. web项目学习之基于注解的Controller

    1. 低版本Spring MVC 实现Controller 使用过低版本 Spring MVC 的读者都知道:当创建一个 Controller 时,我们需要直接或间接地实现 org.springfra ...

  5. Resin服务器部署web项目

    Resin服务器部署web项目 学习了:https://blog.csdn.net/eff666/article/details/53324167 需要配置resin.xml文件: <host ...

  6. web前端学习部落22群分享给需要前端练手项目

    前端学习还是很有趣的,可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,就整理了一些前端项目教程, ...

  7. Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

    本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...

  8. Java Web学习系列——Maven Web项目中集成使用Spring

    参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...

  9. Maven学习:Eclipse使用maven构建web项目(转)

    Maven学习:Eclipse使用maven构建web项目(转) 8.更改class路径:右键项目,Java Build Path -> Source 下面应该有4个文件夹.src/main/j ...

随机推荐

  1. npm 好用工具 for 前端

    1. caniuse npm install -g caniuse-cmd

  2. WAMP(Windows+Apache+Mysql+PHP)环境搭建

    学习PHP已经有一段时间,一直没有写过关于开发环境搭建的笔记,现在补上吧,因为安装配置的步骤记得不是很清楚,借鉴了一些别人的经验,总结如下: 首先去官方网站下载各个软件,下载需要的版本: Apache ...

  3. 【python之旅】python的基础一

    一.关于模块那些事 python的强大之处在于他有着丰富且强大的标准库和第三方库,很对功能都有相应的python库支持 例如: sys模块: # Author :GU import sys print ...

  4. SEMAT[软件工程方法和理论 Software Engineering Method and Theory]

    Agile software development Agile software development is a group of software development methods bas ...

  5. directUI

    MFC界面开发中,习惯了使用控件,亦或者是自绘制控件来美化界面,但操作起来繁琐,还不太美观.DirectUI的出现,对于界面开发,给了我们一个新的选择,目前很多公司使用了该技术对其产品进行了美化,效果 ...

  6. Sublime text 3 快键方式汇总 及 主题应用

    Sublime Text 3 快捷键汇总 Sublime Text 3是款非常实用代码编辑神器,但是想要用任何一款软件,掌握一些快捷键还是很有必要的. 选择类 Ctrl+D 选中光标所占的文本,继续操 ...

  7. UIActionViewController 详解 iOS8

    iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“controller”一下子推翻了 ...

  8. Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一)【转载】

    Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一) 自从搞好了单向一对一关系,装满代码的心中塞进了挥之不去的情丝 —— 单相思.谁都知道音乐世界离不开情感,可谁又知 ...

  9. 从零开始学习MySQL2---MySQL的安装与配置(只有Windows)

    因为我电脑只装了Windows系统,故而,只整理了在Windows系统下的安装方式 截图比较麻烦,故而多引用百度经验. Windows平台下安装与配置MySQL 5.6 下载,网址:http://de ...

  10. Thrift 使用方法