sitemesh案例环境搭建操作步骤
sitemesh其实就是一个拦截器,拦下来后它首先会去读取decorators,如果访问的是/pages/sports/*,根据<pattern>中的路径就找到了对应的模板,在模板中可以引用目标页面的内容,显示出合并后的内容。
1,将sitemesh-%version%.jar导入到WEB-INF/lib目录下,
发现在解压后的sitemesh中找不到sitemesh-%version%.jar文件,要得到这个文件,需要用apache公司的ant项目反向映射出sitemesh-%version%.jar,映射的就是sitemesh解压后目录中的build.xml文件。
解压ant,\apache-ant-1.8.2-bin\apache-ant-1.8.2\bin目录中ant.bat就是ant的核心了,打开命令行,将ant.bat所在路径设置到path中,这样就可以在任何目录下运行ant了,在命令行进入build.xml所在路径,输入ant,即可解析出文件。会发现build.xml所在路径多出了两个文件夹,build和dist,dist中的就是这个sitemesh-%version%.jar了,
最后:将这个jar文件拷贝到当前工程的WEB-INF/lib目录下。
2,在\sitemesh-2.4.1\src\example-webapp\WEB-INF目录下找到decorators.xml和sitemesh.xml两个文件,将这两个文件拷贝到WEB-INF下。暂且不用配置。
3,在web.xml中配置过滤器。
<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>
4,前期准备工作OK,准备一个模版页面,例如main.jsp,建立在WEB-INF下,在模板页面中,可以用三个标签来导入需要显示的页面的内容,分别是:
<decorator:title default="Welcome!" />导入标题
<decorator:head></decorator:head>导入头
<decorator:body></decorator:body>导入体
因为用到了标签,所以要在jsp顶部导入标签库:
<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator"%>
模板页面搞定!
5,配置decorators.xml文件,
<decorators defaultdir="/WEB-INF">
<decoratorname="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
defaultdir:模板所在的路径
name:为这个模板起个名字,
page:模板文件名
<pattern>:哪些路径下的文件显示的时候找这个模板,/*为所有的页面都通过这个模板显示
OK!做好页面就可以运行了!
5,有的时候我们会有多个模板页面,那就要在decorators.xml文件中配置多个映射,如:我们有新闻模板和体育模板,存放在WEB-INF/decorators文件夹中,在WebRoot/pages文件夹中,news文件夹存放新闻页面,这里面的文件找新闻模板;sports文件夹存放体育页面,这里面的文件找体育模板。配置decorators.xml文件:
<decorators defaultdir="/WEB-INF/decorators">
<decoratorname="news" page="news.jsp">
<pattern>/pages/news/*</pattern>
</decorator>
<decoratorname="sports" page="sports.jsp">
<pattern>/pages/sports/*</pattern>
</decorator>
</decorators>
OK!