SiteMesh 配置文件

 将 sitemesh_[version].jar 包加到 WEB-INF\lib 下

2.         在 web.xml 中增加

 

         < filter > 

               < filter-name > sitemesh </ filter-name > 

               < filter-class > com.opensymphony.module.sitemesh.filter.PageFilter </ filter-class > 

        </ filter > 

        < filter-mapping > 

               < filter-name > sitemesh </ filter-name > 

               < url-pattern > /* </ url-pattern > 

        </ filter-mapping > 
 
 

       表示对系统中所有 url 请求均使用 sitemesh Filter 进行拦截。

3.         在 WEB-INF 下配置 sitemesh.xml 和 decorator.xml 配置文件。

Sitemesh.xml

 

 < sitemesh > 

     < property  name ="decorators-file"  value ="/WEB-INF/decorators.xml" /> 

     < excludes  file ="${decorators-file}" /> 

     < page-parsers > 

         < parser  default ="true"  class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 

         < parser  content-type ="text/html" 

class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 

         < parser  content-type ="text/html;charset=ISO-8859-1" 

class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 

     </ page-parsers > 

     < decorator-mappers > 

                   <!--  for print  --> 

         < mapper  class ="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper" > 

                             < param  name ="decorator"  value ="printable"   /> 

                             < param  name ="parameter.name"  value ="printable"   /> 

                             < param  name ="parameter.value"  value ="true"   /> 

         </ mapper > 

         < mapper  class ="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper" > 

             < param  name ="config"  value ="${decorators-file}" /> 

         </ mapper > 

     </ decorator-mappers > 

 </ sitemesh > 
 
 

 

Decorator.xml

 

 < decorators  defaultdir ="/decorators" > 

     < excludes > 

         < pattern > /demos/* </ pattern > 

         < pattern > /resources/* </ pattern > 

         < pattern > /test* </ pattern > 

         < pattern > /FCKeditor/* </ pattern > 

     </ excludes > 

          <!--  decorator for print(has parameter: printable=true) --> 

     < decorator  name ="printable"  page ="decPrintable.jsp" /> 

          < decorator  name ="login"  page ="decLogin.jsp" > 

                    < pattern > *login* </ pattern >            <! —url 映射模式 -- > 

          </ decorator > 

     < decorator  name ="default"  page ="decDefault.jsp" > 

         < pattern > /* </ pattern >                  <! — 缺省的装饰器 -- > 

     </ decorator > 

 </ decorators > 
 
 

在 sitemesh.xml 中配置了两个 DecoratorMapper : PrintableDecoratorMapper 和 ConfigDecoratorMapper 。

PrintableDecoratorMapper 是供打印专用,在 url 后加上 printable=true 即会使用 decorator.xml 中指定的 printable 装饰器来对页面进行装饰,一般来说打印页面是只需要打印本页面的内容,其余的如头、脚、导航栏、左右菜单等是不需要打印的,通过装饰器可以轻松实现打印页面的过滤。

4.         创建一个装饰器 JSP 页面,我建议所有装饰器页面放到 decorators 目录,并且以 dec[ 功能 ].jsp 作为命名方式,如 decPrintable.jsp 、 decDefault.jsp 。

下面是一个装饰器的代码:


 

 

 <! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "
     " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
       
 <%--  Include common set of tag library declarations  for  each layout  --%>
 <% @ include file = " /common/taglibs.jsp " %>
 
 < html xmlns = " http://www.w3.org/1999/xhtml "  xml:lang = " en " >
     < head >
         < decorator:head />
     </ head >
 < body
 < decorator:getProperty property = " body.id "  writeEntireProperty = " true " />
 < decorator:getProperty property = " body.onload "  writeEntireProperty = " true " />
 < decorator:getProperty property = " body.onunload "  writeEntireProperty = " true " />
 >      
         <% @ include file = " /common/header.jsp " %> 
             < h1 >< decorator:getProperty property = " page.heading " /></ h1 >  
             <% @ include file = " /common/messages.jsp "   %>
             < decorator:body />
         < jsp:include page = " /common/footer.jsp " />
 </ body >
 </ html >
 

注意其 <decorator:…> 标签,这些标签将被装饰的 page 页面的相应内容作为属性传入。 Page 页面的相关内容将放在 decorator 标签所指定的位置。

Title :标题

Head :头部,一般是公共的 js 、 css 及 meta 。

Body :被装饰的 page 的主体内容。

5 、 Sitemesh 通过在 sitemesh.xml 中配置 DecoratorMapper 配置映射器,通过在 decorator.xml 中配置装饰器文件及其匹配方式。当有页面需要输出到客户端时,将根据这些配置选择相应的装饰器来进行装饰,将装饰结果返回给客户界面。

 

4.   参考资料
关于 Sitemesh 的 api 及详细使用说明可以参看其官方网站

http://www.opensymphony.com/sitemesh

你可能感兴趣的:(xml,Web,jsp,XHTML,fckeditor)