sitemesh網頁布局

來源:互聯網
上載者:User

標籤:ring   lang   page   color   hive   login   需要   org   head   

看項目時發現對應頁面下找不到側欄部分代碼,仔細觀察後發現頁面引入了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

sitemesh網頁布局

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.