Sitemesh小记

2019-10-04 14:40栏目:公益
TAG:

一、前言

  因出席集团框架改造,接触到了Sitemesh这几个用于网页布局和修饰的框架,因事先从未接触过(汗颜),但是开采其精雕细镂好用,便以此文记之~

二、正文

  Sitemesh有哪些意义吧?作者相信广大人在利用jsp的时候,平日会将head部分单独放二个jsp,然后在急需利用的地点,用<%@ include file="/WEB-INF/layouts/header.jsp"%>加载进来,倘若一多个文件幸好,倘诺文件太多,难道要多个个配备进去?能否有一种艺术,收缩这种体力劳动呢?这年Sitemesh派上用场了,通过陈设,它能够自动为呼吁的页面增多上类似刚刚header.jsp中的内容,然后拼装达成今后,重回给客户的浏览器,惊不欣喜,意不奇异?上边小编就来介绍怎么样采用~

  1. 在早先介绍Sitemesh前,先po一张官方网站的流程图

  全天时时彩人工精准计划在线 1

  2. 本文基于的条件

 jdk1.8
  sitemash-2.4.2.jar
  servlet-api-3.0-alpha-1.jar

  3. Maven配置文件pom.xml如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sitemesh.test</groupId>
  <artifactId>Sitemesh</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Sitemesh Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>opensymphony</groupId>
        <artifactId>sitemesh</artifactId>
        <version>2.4.2</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>Sitemesh</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
              <port>8080</port>
              <path>/</path>
              <uriEncoding>UTF-8</uriEncoding>
            </configuration>
          </plugin>
    </plugins>
  </build>
</project>

  4. 工程目录结构

  全天时时彩人工精准计划在线 2

  

  7. 接下去,就说下使用sitemesh的步骤

  1)首先,下载sitemesh对应的jar

  作者利用maven下载,假使看官不是使用maven,本身到Sitemesh官方网站下载对应jar,传送门:http://wiki.sitemesh.org/wiki/display/sitemesh/Download

  2)在web.xml中配置Filter

  ............................ 
  <filter>
    <filter-name>sitemeshFilter</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>sitemeshFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  ............................ 

  3)在WEB-INFO目录下树立贰个layouts文件夹(这一个文件夹随意命名,理论上,地点你能够放在webapp目录下另外地点,这几个三回九转decorator.xml需求采纳),並且在该文件夹上边创建四个文件:default.jsp、header.jsp、footer.jsp,七个文本的剧情如下:

  default.jsp

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


<!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" />
        <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>
    </body>
</html>

  这么些文件中sitemesh标签表明如下:

<decorator:title/>这个标签会找到被装饰页面的title(<title></title>标签内)内容填入
<decorator:head/>找到被装饰页面的head(<head></head>标签内)内容填入
<decorator:body/>找到被装饰页面的body(<body></body>标签内)内容填入.

  header.jsp

<%@page contentType="text/html;charset=utf-8" %>
This is the header!

  footer.jsp

<%@page contentType="text/html;charset=utf-8" %>
This is the footer!

  4)在WEB-INFO目录中国建工业总会公司立文件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>

  5)访谈工程index.jsp

  首先,先看下index.jsp页面内容:

<%@page contentType="text/html;charset=utf-8" %>
<html>
    <head>
        <title>Sitemesh测试</title>
    </head>
    <body>
        <h2>Body 内容</h2>
    </body>
</html>

  访谈后页面展现的机能:

  全天时时彩人工精准计划在线 3

  查看网页源码:

<!DOCTYPE html>
<html>
    <head>
        <title>QuickStart示例:Sitemesh测试</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" />
    </head>
    <body>
        <div class="container">
            This is the header!
            <div id="content">
                <h2>Body 内容</h2>
            </div>
            This is the footer!
        </div>
    </body>
</html>

  8、补充表达

  如若在decorators.xml文件中,配置了多个decorator节点,如下:

<?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>
    <decorator name="default2" page="default2.jsp">
        <pattern>/*</pattern>
    </decorator>
</decorators>

  过滤器的配置不改变,以往本身又有个页面叫index2.jsp,笔者急需的是被名称为“default2”的decorator装饰时,怎么着钦定呢?那么只需在index2.jsp中,进行如下配置:

全天时时彩人工精准计划在线,  全天时时彩人工精准计划在线 4

  当中name的值固定为“decorator”,content的从头到尾的经过与decorators.xml文件中decorator节点的name属性对应

  

  总结:当浏览器里面诉求页面数据时,过滤器SiteMeshFilter拦截央求,然后依据decorator.xml中配置内容,鲜明是不是为excludes设置为无需装饰的页面,如若不是,那么就利用decorator节点配置的点缀框架default.jsp,並且将内部<sitemesh:title />、<sitemesh:head />、<sitemesh:body />分别用乞求页面包车型客车<title>、<head>、<body>部分的内容替换,最后输出到顾客的浏览器

  

三、参照他事他说加以考察链接

       https://www.cnblogs.com/china-li/archive/2013/05/15/3080154.html

四、联系本身

  为便于未有天涯论坛账号的读者交流,刻意创立贰个企鹅群(纯公共受益,非收益相关),读者如果有对博文不明之处,接待加群交换:261746360,小杜比亚-天涯论坛

版权声明:本文由时时彩最精准人工计划发布于公益,转载请注明出处:Sitemesh小记