sitemesh 入门demo

看了n天项目了,没啥收获,

项目组里面用到了sitemesh,以前也没接触过,就无聊看了一下。

在此总结一下,给需要的人。

需要有配置3个地方。

 

web.xml        decorators.xml           sitemesh.xml

 

 

web.xml的配置如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>test_sitemesh</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
 <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>
  
</web-app>

 

decorators.xml路径在web-inf下面,配置如下:

 

<?xml version="1.0" encoding="utf-8"?>  
<decorators defaultdir="/decorators">  
    <!-- 此处用来定义不需要过滤的页面 -->  
    <excludes>  
    </excludes>  
  
 <!-- 用来定义装饰器要过滤的页面 ,style.jsp为装饰页面,/*表示装饰所有页面-->  
    <decorator name="main" page="style.jsp">  
        <pattern>/*</pattern>  
    </decorator>  
</decorators>  

 

sitemesh.xml的路径也在web-inf下面,配置如下:

 

<sitemesh>
    <property name="decorators-file" value="/WEB-INF/decorators.xml"/>
    <excludes file="${decorators-file}"/>

    <page-parsers>
        <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
    </page-parsers>

    <decorator-mappers>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
            <param name="property.1" value="meta.decorator"/>
            <param name="property.2" value="decorator"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
            <param name="match.MSIE" value="ie"/>
            <param name="match.Mozilla [" value="ns"/>
            <param name="match.Opera" value="opera"/>
            <param name="match.Lynx" value="lynx"/>
        </mapper>

        <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.RobotDecoratorMapper">
            <param name="decorator" value="robot"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
            <param name="decorator.parameter" value="decorator"/>
            <param name="parameter.name" value="confirm"/>
            <param name="parameter.value" value="true"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
            <param name="config" value="${decorators-file}"/>
        </mapper>

    </decorator-mappers>

</sitemesh>

 

 

配置文件如上,我看在项目中在web.xml里面是写的sitemeshFilter,但是在网上都很多是pagefilter

有点疑惑,准备下周去问问老大。

 

然后是装饰页面,它是为了装饰其它页面而存在,style.jsp,

它是放在webRoot/decorators目录下,这个路径是在上面decorators.xml里面定义的。

这里只是测试,所以内容很简单,如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
       <title><decorator:title />
       </title>
    <body>
       <p>head decorator...</p> <!-- 头部 -->
       <decorator:body />
       <p>foot decorator...</p><!-- 脚部,可以写一些copyright之类的东西 -->
    </body>
</html>
 

然后就直接运行,只要在webRoot下面有页面,访问即可看到效果。

 

 

 

你可能感兴趣的:(sitemesh)