`

SiteMesh3简单研究笔记

阅读更多

对应之前的SiteMesh2简单研究笔记 http://sgq0085.iteye.com/blog/2072882

 

一.导入依赖

导入在中央库中的依赖方法如下

<dependency>
    <groupId>org.sitemesh</groupId>
    <artifactId>sitemesh</artifactId>
    <version>3.0.0</version>
</dependency>

 

二.web.xml中添加Filter

在web.xml中添加下面这个filter

<filter>
    <filter-name>sitemesh</filter-name>
    <!--<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>-->
    <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

 

三.装饰器decorator

编写装饰器JSP页面 WEB-INF/decorator/decorator.jsp

<!DOCTYPE html>
<html>
<head>
    <title>My Site - <sitemesh:write property='title'/></title>
    <sitemesh:write property='head'/>
</head>
<body>
<sitemesh:write property='body'/>
</body>
</html>

 

四.配置文件sitemesh3.xml

<sitemesh>
    <!--默认情况下,sitemesh 只对 HTTP 响应头中 Content-Type 为 text/html 的类型进行拦截和装饰,可以添加更多的 mime 类型-->
    <mime-type>text/html</mime-type>
    <mime-type>application/xhtml+xml</mime-type>

    <!-- 不被sitemesh装饰的路径 -->
    <mapping path="/static/*" exclue="true"/>
    <mapping path="/api/*" exclue="true"/>

    <!-- 全局默认装饰器 -->
    <mapping path="/*" decorator="/WEB-INF/decorator/decorator.jsp"/>

    <!-- 同时使用多个装饰器 -->
    <mapping path="/site*">
        <decorator>/WEB-INF/decorator/decorator.jsp</decorator>
        <decorator>/WEB-INF/decorator/decorator2.jsp</decorator>
    </mapping>

    <!-- 多个地址使用同一个装饰器 -->
    <mapping path="*.htm" decorator="/WEB-INF/decorator/html.jsp"/>
    <mapping path="*.html" decorator="/WEB-INF/decorator/html.jsp"/>
</sitemesh>

  

 

 五.与Spring MVC结合时灵活运用方式

当与Spring MVC结合使用的时候,如果需要针对不同的页面,展示不同的目录功能,其他的页面都可以通过路径来很容易的实现,但是由于首页一般是通过下面这段代码配置

 

<mvc:view-controller path="/" view-name="portal" />
 

 

有两种方法解决

第一种,将上面一段配置改为如下

 

<mvc:view-controller path="/" view-name="redirect:/portal" />
<mvc:view-controller path="/portal" view-name="portal" />
 

 

第二种方法,写一个Controller,RequestMapping匹配路径/portal,由Controller返回portal,通过这种方式,可以在Controller方法中完成一些特殊的要求。比如某些情况下不是到首页而是其他路径。

 

<mvc:view-controller path="/" view-name="redirect:/portal" />
 

写在后面

1.使用sitemesh统一页眉页脚菜单等,针对另外一些引用比如引入jqGrid需要引入一些CSS和JS文件,还是统一到一个JSP中,再在具体的JSP页面中通过指令元素include引入

<%@ include file="/WEB-INF/****/****.jsp"%>

 

2.引入的时候需要注意 page指令中contentType属性如果各个JSP不一致(比如text/html;和charset=UTF-8中间有没有空格)会导致异常。

 

3.放一个自己的decorator.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>

<%--使用sitemesh统一页眉页脚菜单等,具体JSP中使用JSP指令元素include引入具体组件组装的JSP--%>
<%--<%@ include file="/WEB-INF/****/****.jsp"%>--%>

<%--添加标准模式(standard mode)的声明 CSS1Compat 而不是BackCompat --%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%--语言属性 根元素指定 lang 属性--%>
<html lang="zh-CN">
<head>
    <title>WEB <sitemesh:write property='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"/>
    <%--IE兼容模式 通知IE采用其所支持的最新的模式--%>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <%--国产浏览器默认采用高速模式webkit内核--%>
    <meta name="renderer" content="webkit">

    <link type="image/x-icon" rel="shortcut icon" href="${ctx}/static/images/favicon.ico">

    <%--HTML5中引入css文件的标签link的type属性默认值为"text/css",所以不需要设置--%>
    <link rel="stylesheet" type="text/css" href="${ctx}/static/bootstrap/3.2.0/css/bootstrap.min.css"/>

    <!--[if lt IE 9]>
    <script type="text/javascript" src="${ctx}/static/html5css3/html5shiv.min.js"></script>
    <script type="text/javascript" src="${ctx}/static/html5css3/respond.min.js"></script>
    <![endif]-->

    <%--HTML5中引入JS文件的标签lscripttype属性默认值为"text/javascript",所以不需要设置--%>
    <script type="text/javascript" src="${ctx}/static/jquery/jquery-1.11.1/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="${ctx}/static/bootstrap/3.2.0/js/bootstrap.min.js"></script>

    <sitemesh:write property='head'/>
</head>
<body>
<sitemesh:write property='body'/>
</body>
</html>

 

 

 

2
0
分享到:
评论

相关推荐

    sitemesh3-demo

    【sitemesh3-demo】是一个基于Sitemesh3框架的示例项目,旨在展示如何在Web应用程序中有效地实现页面布局和装饰功能。Sitemesh是一个开源的Java Web应用框架,主要用于增强网页的外观和结构,通过定义装饰模板,可以...

    Sitemesh 3 的使用及配置

    ### Sitemesh 3 的使用及配置 #### 一、Sitemesh 3 简介 Sitemesh 是一个非常实用的Web页面布局与修饰框架,它通过Servlet中的Filter来实现网页的装饰功能,类似于ASP.NET中的“母版页”技术。这种技术允许开发者...

    sitemesh3官方下载包

    **Sitemesh3** 是一个开源的网页布局和装饰框架,用于Java Web应用程序。它主要目的是帮助开发者统一网站的外观和感觉,通过提供一种简单的方式来装饰(或模板化)整个Web应用中的页面。Sitemesh3是Sitemesh项目的第...

    sitemesh框架简单例子

    在“sitemesh框架简单例子”这个教程中,我们将深入理解Sitemesh的基本概念和用法。 首先,我们需要了解Sitemesh的工作原理。Sitemesh通过拦截HTTP请求,对返回的HTML内容进行装饰。它使用一种叫做装饰器...

    SpringMVC-Freemarker_Sitemesh3例子

    **SpringMVC、Freemarker与Sitemesh3详解** SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。SpringMVC提供了一个灵活的处理机制,包括处理器映射、视图解析、数据绑定...

    sitemesh3包

    **Sitemesh3 SDK详解** Sitemesh 是一个开源的 Web 应用程序框架,用于增强网站的布局和装饰功能。Sitemesh3 是其第三个主要版本,它提供了更现代的架构和更好的性能,旨在帮助开发者更高效地管理和美化他们的网页...

    springmvc + mybatis + sitemesh3 超简洁例子

    springmvc + mybatis + sitemesh3 超简洁例子 整合springmvc mybatis 方法请看: http://blog.csdn.net/kokoyuo/article/details/52808510

    springmvc + mybatis + sitemesh3登陆 超简洁例子mysql

    在本项目中,我们探索的是一个基于Spring MVC、MyBatis和Sitemesh3的超简洁登录示例,其中还集成了MySQL数据库和MD5加密验证。这是一个经典的Java Web开发框架组合,常用于构建高效、可扩展的企业级应用。下面我们将...

    sitemesh3demo附配置说明

    总的来说,Sitemesh3提供了一种强大的方式来管理Web应用的页面布局和风格,通过配置和简单的模板语言,可以快速实现复杂的页面装饰功能。`sitemesh3demo`是学习和理解Sitemesh3功能和用法的宝贵资源,通过实际操作和...

    初试sitemesh实现模块简易整合

    **初试sitemesh实现模块简易整合** Sitemesh 是一个开源的网页布局框架,用于在Java Web应用程序中实现页面装饰(Decorator)模式。它可以帮助开发者统一网站的头部、底部、侧边栏等通用部分,使得网站设计更加整洁...

    java sitemesh 页面框架

    Java Sitemesh是一个开源的页面布局和装饰...通过研究这些资源,你可以更好地理解和学习如何在实际项目中应用Sitemesh。学习和掌握Sitemesh能让你在开发Java Web应用时更加得心应手,提升项目的整体质量和用户体验。

    sitemesh教程

    ##### 3. 配置装饰器 - 创建装饰器配置文件`[web-app]/WEB-INF/decorators.xml`。 - 文件结构示例: ```xml &lt;!-- 在这里定义装饰器 --&gt; ``` ##### 4. 可选配置 - 创建可选配置文件`[web-app]/WEB-INF/...

    sitemesh入门demo

    这个demo是基于博主的**Sitemesh入门和使用笔记**,提供了对应的源码供学习者实践和参考。以下是关于Sitemesh的详细讲解: 1. **安装与配置** - 首先,你需要将Sitemesh的JAR文件添加到你的项目类路径中。这可以...

    siteMesh demo+文档

    通过研究这个"siteMesh demo+文档",开发者可以快速掌握SiteMesh的基本使用,同时也能了解其在实际项目中的应用方式。无论你是初学者还是有经验的Web开发者,SiteMesh都能帮助你提升网站的用户体验,实现高效且一致...

    SiteMesh教程及SiteMesh官方文档翻译

    下面是一个简单的例子,展示了如何在Spring MVC项目中同时使用Sitemesh和Freemarker。 **`web.xml`配置** ```xml &lt;filter-name&gt;sitemesh &lt;filter-class&gt;...

    sitemesh技术的应用.doc

    标题:Sitemesh技术的应用 描述与标签:Sitemesh技术的应用 Sitemesh技术是Web开发领域中一种用于页面装饰的重要工具,尤其在Java Web应用程序中被广泛应用。其核心功能在于能够统一网站的外观风格,使不同功能...

    sitemesh

    **Sitemesh** 是一个广泛使用的开源Web应用框架,它主要功能是提供页面布局和装饰功能,用于统一网站的外观和感觉。Sitemesh通过在Web应用中引入“母版”(Master Page)的概念,使得开发者可以轻松地创建一致性的...

    sitemesh简单demo

    这个“sitemesh简单demo”是一个使用 Maven 构建的项目,旨在提供一个快速入门的示例,帮助初学者理解并掌握 sitemesh 的基本用法。 在 Web 开发中,sitemesh 通过拦截 HTTP 请求,将用户定义的页面模板(通常称为...

    SiteMesh

    3. **配置SiteMesh**: 在`sitemesh.xml`中指定布局文件的位置和装饰策略。 4. **标记页面内容**: 在需要装饰的JSP或HTML页面中添加特殊的SiteMesh注释或标签,告知SiteMesh如何插入到布局文件中。 5. **运行应用**...

Global site tag (gtag.js) - Google Analytics