用sitemesh框架解决项目统一布局的解决方案
Sitemesh装饰框架
Sitemesh项目简介:
Sitemesh是一个用来在jsp中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态和静态装饰外观的分离。
Sitemesh的作用
Sitemesh是由一个基于Web页面布局,装饰以及与实现村Web应用整合的框架,它能帮助我们在由大量页面构成的项目中创建一支的页面布局和外观 ,如一致的导航条, 一致的banner,一致的版权,等等。它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容,使得它的内容也符合你的页面结构的要求。
如何使用Sitemesh
1.下载SiteMesh
下载地址:
http://www.opensymphony.com/sitemesh/download.action
2、在工程中引入Sitemesh的必要jar包
3.修改你的web.xml里面加入sitemesh的过滤器
pom.xml引入sitemash 的 jar包 :
web-inf底下的web.xml 下的拦截器配置:
上图中的第二个filter-name和图中的第一个filter-name是相匹配的》》
/*<–拦截所有的请求路径 过滤所有的访问路径 -->
url-patten 拦截下的访问路径 会根据 上图中的第二个filter-name 去查询第一个filter-name 并执行第一个 filter-name中的让它的类去处理拦截下的请求
3.任何框架都有它自己的配置文件!Sitemesh也不例外
配置文件
sitemesh默认配置文件名为 decorators.xml(在WEB_INF下创建)核心文件
defaultdir <-- defultdir设置了装饰页面的目录 装饰页面好比如相片框 (不是普通页面 ) 上图的装饰页面放在了decorators目录下(decorators放在WEB_INF下)-- >
decorator标签 区别就是父标签是复数 带有“s”子标签没有;
name =‘main’ page指向 decorators文件夹下的main.jsp装饰页面
mian.jsp 作为主装饰页面
页面content内容需要<%@ taglib prefix=‘xxx’ uri=’ 详情见上图’%>
prefix=‘xxx’ 前缀可以自己随意命名 但是使用的时候 要使用自己的命名;
这里的prefix 使用的是’decorator’
常用的有三个标签 decorator:body
decorator:head
decorator:title
decorator:body的作用:
引入decorator:body</decorator:body>标签
页面所有的内容全都放在这个decorator:body*******…</decorator:body>标签上
标题标签
每个页面要显示不一样的标题就是使用decorator:title/
测试下:
我当前目录下有index.jsp页面
启动tomcat
在浏览器中的地址栏访问这个页面 http://localhost://8080/sitemeshdemo/index.jsp
解析下:
再换个演示:
这里添加了home页面
然后 浏览器地址访问http://localhost:8080/sitemeshdemo/home.jsp