SiteMesh 사용

70107 단어 sitemesh
본문 리 트 윗, 원문 주소:
http://www.cnblogs.com/china-li/archive/2013/05/15/3080154.html
 
 
SiteMesh 의 소 개 는 더 이상 말 하지 않 겠 습 니 다. 주로 페이지 스타일 을 통일 시 키 고 중복 인 코딩 을 줄 이 는 데 사 용 됩 니 다.
필 터 를 정의 한 다음 페이지 에 머리 와 아래쪽 을 통일 시 킵 니 다.
먼저 WEB - INF / lib 에 sitemesh 의 jar 가방 을 도입 해 야 합 니 다: http://wiki.sitemesh.org/display/sitemesh/Download 。2. 4 버 전 을 사용 합 니 다.
 
필터 정의:
웹 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>


 
decorators. xml 파일:
WEB - INF 에서 새 decorators. xml 파일 을 만 듭 니 다:
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/WEB-INF/layouts/">
    <!--                -->
    <excludes>
        <pattern>/static/*</pattern>
    </excludes>

    <!--               -->
    <decorator name="default" page="default.jsp">
        <pattern>/*</pattern>
    </decorator>
</decorators>


/ static / 디 렉 터 리 에 있 는 파일 을 걸 러 내지 않 고 장식 기 를 지정 합 니 다: / WEB - INF / layouts / default. jsp.
저 는 Spring MVC 를 사 용 했 습 니 다. 디 렉 터 리 구 조 는 대체적으로:
SiteMesh的使用
 
 
default.jsp:
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>  
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:set var="ctx" value="${pageContext.request.contextPath}" />

<!DOCTYPE html>
<html>
<head>
<title>QuickStart  :<sitemesh:title/></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

<link type="image/x-icon" href="${ctx}/static/images/favicon.ico" rel="shortcut icon">
<link href="${ctx}/sc/bootstrap/2.3.0/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="${ctx}/sc/jquery-validation/1.11.0/validate.css" type="text/css" rel="stylesheet" />
<link href="${ctx}/css/base/default.css" type="text/css" rel="stylesheet" />
<script src="${ctx}/sc/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="${ctx}/sc/jquery-validation/1.11.0/jquery.validate.min.js" type="text/javascript"></script>
<script src="${ctx}/sc/jquery-validation/1.11.0/messages_bs_zh.js" type="text/javascript"></script>

<sitemesh:head/>
</head>

<body>
    <div class="container">
        <%@ include file="/WEB-INF/layouts/header.jsp"%>
        <div id="content">
            <sitemesh:body/>
        </div>
        <%@ include file="/WEB-INF/layouts/footer.jsp"%>
    </div>
    <script src="${ctx}/sc/bootstrap/2.3.0/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>


먼저 SiteMesh 라벨 을 도 입 했 습 니 다.
 필터 페이지 의 title 로 자동 으로 대 체 됩 니 다.
 필터 페이지 헤드 에 있 는 물건 (title 제외) 을 여기에 놓 습 니 다.
 걸 러 진 페이지 body 의 내용 을 여기에 놓 습 니 다.
콘 텐 츠 의 상하 에 header 와 footer 를 도입 했다.
우 리 는 머리 에 js 와 css 를 도입 하면 다시 사용 할 수 있다.
 
사용:
사용 하 는 과정 에서 SiteMesh 의 존 재 를 거의 느끼 지 못 했다.예 를 들 어 아래 페이지: 
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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</title>
<script type="text/javascript" src="/js/hello.js"></script>
</head>

<body>
    <h4>   (  )  body     。</h4>
    <h3>  SiteMesh   ?</h3>
    <ul>
        <li>   (  )           。</li>
        <li>         ,             (  )  。</li>
        <li></li>
        <li>  。。。</li>
    </ul>
</body>
</html>


이것 은 일반적인 페이지 입 니 다. 그러나 SiteMesh 에 장식 되면 < html > < body > < head > 등 요 소 를 자동 으로 제거 하고 해당 하 는 물건 을 템 플 릿 대응 위치 에 놓 습 니 다.
SiteMesh 로 장 식 된 페이지 소스 코드 를 살 펴 보 겠 습 니 다.

<!DOCTYPE html>
<html>
<head>
<title>QuickStart  :   (  )  title</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

<link type="image/x-icon" href="/SpringMVC/static/images/favicon.ico" rel="shortcut icon">
<link href="/SpringMVC/sc/bootstrap/2.3.0/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="/SpringMVC/sc/jquery-validation/1.11.0/validate.css" type="text/css" rel="stylesheet" />
<link href="/SpringMVC/css/base/default.css" type="text/css" rel="stylesheet" />
<script src="/SpringMVC/sc/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="/SpringMVC/sc/jquery-validation/1.11.0/jquery.validate.min.js" type="text/javascript"></script>
<script src="/SpringMVC/sc/jquery-validation/1.11.0/messages_bs_zh.js" type="text/javascript"></script>


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

<script type="text/javascript" src="/js/hello.js"></script>

</head>

<body>
    <div class="container">
        


<div id="header">
</div>
        <div id="content">
            
    <h4>   (  )  body     。</h4>
    <h3>  SiteMesh   ?</h3>
    <ul>
        <li>   (  )           。</li>
        <li>         ,             (  )  。</li>
        <li></li>
        <li>  。。。</li>
    </ul>

        </div>
        
<div id="footer">
    Copyright &copy; 2005-2012 <a href="">spring.org.cn</a>
</div>


    </div>
    <script src="/SpringMVC/sc/bootstrap/2.3.0/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>


 
요약:
SiteMesh 설정 이 간단 하고 사용 이 유연 하 며 우리 의 정상 적 인 개발 에 영향 을 주지 않 습 니 다. 이름 없 는 좋 은 조수 로 서 사용 하 는 것 을 추천 합 니 다.

좋은 웹페이지 즐겨찾기