sitemesh网页布局

看项目时发现对应页面下找不到侧栏部分代码,仔细观察后发现页面引入了sitemesh标签,查了下资料原来是页面用了sitemesh框架解!耦!了!

以前多个模块包含相同模块时总是include jsp文件,没感觉多么麻烦,但看了sitemesh,感觉可以非常简单!

sitemesh通过基于ServletFilter截取request和response,并给原始的页面介入一定的装饰,然后把结果返回给客户端,被装饰的页面并不知道sitemesh的装饰。

使用步骤如下:(sitemesh运行环境需要:servlet, JDK)

1,引入maven依赖

<dependency>
            <groupId>opensymphony</groupId>
            <artifactId>sitemesh</artifactId>
            <version>2.4.2</version>
</dependency>

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>
        <servlet-name>springmvcServlet</servlet-name>
    </filter-mapping>

<servlet>
        <servlet-name>springmvcServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>***</param-name>
            <param-value>***springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvcServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

3.在WEB-INF目录下添加sitemesh配置文件decorators.xml

<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/WEB-INF/layout">
    <!-- 此处用来定义不需要过滤的页面 -->
    <excludes>
        <pattern>/login</pattern>

   <pattern>/static/*</pattern> 
       <!--…… -->     
    </excludes>

<!-- 定义用来装饰的页面 -->
    <decorator name="default" page="yanan7890.jsp">
        <pattern>/*</pattern>
    </decorator>
</decorators>

4.定义yanan7890.jsp页面,根据放在decorators defaultdir配置,放在/WEB-INF/layout/目录下

<%@page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator"%>
<!DOCTYPE html>
<html>
<head>

<title>SiteMesh示例-<sitemesh:title/></title>  <!-- 会自动替换为被过滤页面的title.sitemesh:title可选-->

<!--也可以引入需要复用的css和js-->

<link href="/***/.css" rel="stylesheet" type="text/css">
<script src="/***/.js"></script>
<sitemesh:head/><!--会把被过滤页面head里面的东西(除了title)放在这个地方-->
</head>
<body>

<%@ include file="/common/head.jsp"%>

<div>
            <sitemesh:body/><!--被过滤的页面body里面的内容放在这里。-->
</div>
    <%@ include file="/common/foot.jsp"%>
</body>
</html>

如步骤3配置,如访问/login和/static下的页面不会装饰,访问其它页面会按照yanan7890.jsp拦截装饰

至此,大功告成!

参考文章:

1.http://cuisuqiang.iteye.com/blog/2066166

2.http://www.cnblogs.com/shanshouchen/archive/2012/08/10/2631819.html

3.http://baike.baidu.com/item/sitemesh

时间: 2024-10-11 14:44:30

sitemesh网页布局的相关文章

网页布局基础

网页布局基础     简介 什么是网页布局?    网页布局是网页制作的基础,使用DIV+CSS布局网页是基础中的基础.三种基本布局方式:流式布局,浮动布局,绝对定位布局. 网页设计的特点:1:网页宽度可变  2头+内容主体(根据需要分栏)+页脚(不重要的内容)   对长度设置百分比可实现网页自适应 W3C标准包括结构化标准语言,表现标准语言,行为标准语言,倡导结构,样式,行为分离. CSS中,存在三种定位机制:标准文档流,浮动,绝对定位. 标准文档流:从上到下,从左到右输出文档内容,由块级元素

利用css进行网页布局

网页布局: 又称版式布局,是网页UI设计师将有限的视觉元素进行有机的排列组合,将理性的思维个性的化的表现出来,是一种具有个人艺术特色的视觉传达方式.传达信息的同时有美感.网页设计特点(相对纸媒来说).特点:1.网页可以自适应宽度2.网页的长度理论上可以无限延长3:页面为:头部,主体部分,底部. 分栏又称为分列:一列布局 二列布局 三列布局 以及混合布局(用的最多),布局通过浮动和定位来完成(实现UI界面效果). 一列布局: body{margin:0;parding:0;}清除默认样式,各个浏览

14.1 “1-2-1”变宽度网页布局

在上一章中,对固定宽度的页面布局傲了比较深入地分析和讲解.在本章中,将对变宽度的页面布局做进一步的分析.变宽度的布局要比固定宽度的布局复杂一些,根本的原因在于,宽度不确定,导致很多参数无法确定.因此.必须使用一些技巧来完成. 这里将介绍一些国外的CSS领域著名的设计师的研究成果,并对变宽度网页布局的总体情况进行归纳.希望读者能够保持清晰的思路,这样在实际工作中遇到具体的案例时,就可以灵活地选择解决方法.lodidance.com “1-1-1”布局过于简单,因此这里就不再介绍了.我们从“1-2-

DIV+CSS网页布局常用的一些基础知识整理

CSS命名规范一.文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: 二.常用类/ID命名规范页 眉:header内 容:content容 器:container页 脚:footer 版 权:copyright 导 航:menu主导航:mainMenu子导航:subMenu 标 志:logo标 语:banner标 题:title侧边栏:sidebar 图 标:Icon注 释:note

简单实用的CSS网页布局中文排版技巧

由于汉字的特殊性,在css网页布局中,中文排版有别于英文排版.排版是一个麻烦的问题,小编认为,作为一个优秀的网页设计师和网页制作人员,掌握一些简单的中文排版技巧是不可或缺的,所以今天特意总结了几个简单实用的技巧,希望对大家有所帮助. 一.如何设定文字字体.颜色.大小等 font-style设定斜体,比如font-style:italic font-weight设定文字粗细,比如font-weight:bold font-size设定文字大小,比如font-size:12px line-heigh

【css3网页布局】flex盒子模型

1.0 前言 网页布局(layout)是CSS的一个重点应用. 经典布局类型: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能,成为了现下最流行的布局方式. Flex布局是什么? Flex是Flexible

网页布局经验分享

今天博主想给大家分享的是,在实际网页制作中,我们通常会遇到到一些问题,以及如何去着手做一整个网页布局. 首先,我们在接到制作网页的要求和主要素材以及对方想要的网页效果后(前期准备工作),我们更多的要考虑的是一个页面的整体效果以及这个整体里面所包含的小版块是否合理,是否被主流浏览器所兼容.我这里说的主流浏览器主要是指IE.firefox.谷歌等一些我们日常使用率较高的浏览器. 在我看来,首先我们并不需要拿着素材及要求以后提手就码代码,毕竟有经验的码农都知道,先把具体的操作思路有个大致的思维导图以后

PHP.4-DIV+CSS标准网页布局准备工作(下)

DIV+CSS标准网页布局准备工作 区块属性(区块模型) 属 性 描 述 Margin(注) 是定义区块外边界与上级元素距离的属性,用1到4个值来设置元素的边界,每个值都是长度.百分比或者auto,百分比值参考上级元素的宽度,允许使用负值边际.如果四个值都给出了,它们分别被应用于上.右.下和左边界.如果只给出一个值,它被应用于所有边界.如果两个或三个值给出了,省略了的值与对边相等.注意如果边界在垂直方向邻接(重叠)了,会改用其中最大的那个边界值.而水平方向则不会.也可以选择使用上边界margin

网页布局基础 第四次

绝对定位布局:使用position属性实现的网页布局CSS中规定的第三种定位机制能够实现横向多列布局以及较为复杂的定位:比如:带有遮罩层效果的提示框:固定层效果:全屏广告position拥有三种形式四种值:1.静态定位 static2.相对定位 relative3.绝对定位 absolute固定定位 fixed3和4都属于绝对定位,静态定位是元素默认状态,处于标准文档流中 相对定位特点:1.相对于自身原有位置进行偏移2.仍旧处于标准文档流中3.随即拥有偏移属性和z-index属性z-index: