sitemesh模板技术

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和distdist中的就是这个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!

你可能感兴趣的:(javaee)