SiteMesh2.4装饰器

4 篇文章 0 订阅

一,SiteMesh的工作原理

SiteMesh是基于Servletfilter的,即过滤流。它是通过截取reponse,并进行装饰后再交付给客户。

其中涉及到两个名词: 装饰页面(decorator page)和 “被装饰页面(Content page)" , 即 SiteMesh通过对Content Page的装饰,最终得到页面布局和外观一直的页面,并返回给客户

二,Sitemesh2.4.2的整合

1,拷贝sitemesh-2.4.2.jar包到lib目录下,然后再web.xml中配置一个过滤器

<!-- sitemesh装饰器 -->

<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>

<dispatcher>REQUEST</dispatcher>

<dispatcher>FORWARD</dispatcher>

</filter-mapping>

 

2,在WEB-INF下建立decorators/site文件夹(文件夹位置和名称可以自定义,可以在decorators.xml中定义位置路径),然后在这个文件夹中建立装饰页面(如:main.jsp):

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"

prefix="decorator"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>珍惠集邮</title>

<!-- 把功能的cssjs放入到这个装饰页面中 -->

<link href="${basepath}/zhjy/front/css/base.css" rel="stylesheet" type="text/css">

<link href="${basepath}/zhjy/front/css/list.css" rel="stylesheet" type="text/css">

<link href="${basepath}/zhjy/front/css/index.css" rel="stylesheet" type="text/css"/>

<script type="text/javascript" src="${basepath}/zhjy/javascript/common/jquery-1.8.2.min.js"></script>

<script type="text/javascript" src="${basepath}/zhjy/javascript/common/jquery.lazyload.js"></script>

<script type="text/javascript" src="${basepath}/zhjy/javascript/common/jquery.validate.js"></script>

<script type="text/javascript" src="${basepath}/zhjy/javascript/common/jquery.kinMaxShow-1.0.min.js"></script>

<!--[if lt IE 7]>

<script type="text/javascript" src="${basepath}/zhjy/compatible_png/iepngfix_tilebg.js"></script>

<style type="text/css">

img, div, input,a { behavior: url("${basepath}/zhjy/compatible_png/iepngfix.htc") }

</style>

<![endif]-->

<style type="text/css">

  body{behavior:url(${basepath}/zhjy/front/css/hover.htc);} 

</style>

<!-- 被装饰页面的头部<head></head> -->

<decorator:head/> 

</head>

<body>

<!--这里动态引入你的项目中的头部的页面和尾部页面以及导航页面-->

<jsp:include page="/WEB-INF/pages/common/fronthead.jsp"  flush="true"/>

<jsp:include page="/WEB-INF/pages/common/frontnavicat.jsp"  flush="true" />

    <!--被装饰的页面的<body></body>内容-->

<decorator:body />

<jsp:include page="/WEB-INF/pages/common/frontfoot.jsp" flush="true" />

</body>

</html>

 

3,在WEB-INF目录下定义decorators.xml文件(位置可以自定义,可以在sitemesh.xml中修改)

<decorators defaultdir="/WEB-INF/decorators"><!--这里指定上面的装饰页面的文件夹位置-->

<excludes>

<!--不需要被装饰的地址-->

<pattern>/userCenter/userInfo_addUpHeadPicPage.html</pattern>

<pattern>/zhjy/files/*</pattern>

<pattern>/bbs/*</pattern>

<pattern>/common/pay.html</pattern>

<pattern>/common/previewImage_*</pattern>

</excludes>

 

  <!--需要被装饰的页面,可以写多个<decorator>-->

   <decorator name="frontmain" page="site/front/main.jsp">

    <pattern>/*</pattern>

</decorator>

  

<!--<decorator name="usermain" page="site/user/main.jsp">

<pattern>/store/user*</pattern>

<pattern>/product/product*</pattern>

<pattern>/userCenter/*</pattern>

</decorator>-->

</decorators>

 

4,WEB-INF目录下面建立sitemesh.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<sitemesh>

<!-- 这里可以指定上面的decorators.xml的位置 -->

<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 for localization -->

<mapper

class="com.opensymphony.module.sitemesh.mapper.LanguageDecoratorMapper">

<param name="match.en" value="en" />

<param name="match.zh" value="zh" />

</mapper>

<!-- Mapper for browser compatibility -->

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

<param name="match.MSIE" value="ie" />

<param name="match.Mozilla/" value="ns" />

</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.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.ConfigDecoratorMapper">

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

</mapper>

</decorator-mappers>

</sitemesh>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值