`
sunyigao
  • 浏览: 3796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

前端框架之SiteMesh

 
阅读更多

SiteMesh简介

SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容,使得它的内容也符合你的页面结构的要求。甚至于它能将HTML文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。所有的这些,都是GOF的Decorator模式的最生动的实现。尽管它是由java语言来实现的,但它能与其他Web应用很好地集成。

SiteMesh是由Java 2 with Servlet, JSP and XML等技术来实现的,这使得他能很好地与J2EE应用结合,但它能与其他Web应用很好地集成,例如CGI (Perl/Python/C/C++/etc), PHP, Cold Fusion,等
SiteMesh是很容易扩展的,并且他的设计方式使得它很容易实现自定义扩展的需求。

SiteMesh原理

SiteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端。通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需再使用include指令来包含装饰效果,目标页与装饰页完全分离,如果所有页面使用相同的装饰器,可以是整个Web应用具有统一的风格。

下面说一下SiteMesh再项目中的实际用法

1、我的是一个Java Web项目,是Maven形式的,首先贴出pom配置:

<!-- 依赖版本 -->
<sitemesh.version>2.4.2</sitemesh.version>
<dependency>
    <groupId>opensymphony</groupId>
    <artifactId>sitemesh</artifactId>
    <version>${sitemesh.version}</version>
</dependency>

2、下面贴出web.xml配置

<!-- SiteMesh 页面装饰器 -->
<filter>
    <filter-name>sitemeshFilter</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter-mapping><!-- 这个mapping可以根据自己项目的需求设置多个 -->
    <filter-name>sitemeshFilter</filter-name>
    <url-pattern>/admin/*</url-pattern><!-- 这里的路径自己设定,可/* -->
</filter-mapping>
<filter-mapping>
    <filter-name>sitemeshFilter</filter-name>
    <url-pattern>/blog/*</url-pattern>
</filter-mapping>

3、需要在[项目路径/WEB-INF]下建立decorators.xml内容如下:

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

    <!-- 默认装饰页面, 在需要装饰的页面增加 <meta name="decorator" content="default"/> -->
    <!-- CMS基础主题装饰页面 -->
    <decorator name="cms_default_basic" page="/default.jsp" />

</decorators>

以上基本配置就是这些,下面我将贴出我自己项目的页面

CMS基础主题装饰页面default.jsp

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- SiteMesh引用被装饰页面头 -->
<sitemesh:head/>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top"><!-- 固定位置的导航条 -->
    <div class="container">
        <div class="navbar-header">

        </div>
        <div id="bs-navbar" class="navbar-collapse collapse">

        </div><!--/.nav-collapse-head -->
    </div>
</nav>
<!-- Blog主体部分 -->
<div class="container" id="main">
    <div class="blog-header">

    </div>
    <div class="row">
        <div class="col-sm-8 blog-main">
            <!-- SiteMesh引用被装饰页面体 -->
            <sitemesh:body/>
        </div><!-- /.blog-main -->
        <div class="col-sm-3 col-sm-offset-1 blog-sidebar">
            <div class="sidebar-module sidebar-module-inset">

            </div>
            <div class="sidebar-module sidebar-module-inset">

            </div>
        </div><!-- /.blog-sidebar -->
    </div>
</div><!-- /container -->
<br>
<!-- 页脚部分 -->
<footer class="blog-footer">

</footer>
<!-- 返回顶部 -->
<div id="scrollUp" style="position: fixed; display: none;"><i class="glyphicon glyphicon-menu-up"></i></div>
</body>
</html>

下面是被装饰页面

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title></title>
<!-- 引用decorators.xml中的定义配置 -->
<meta name="decorator" content="cms_default_basic"/>
</head>
<body>

<c:forEach items="${page.list}" var="article">
    <div class="blog-post">

        <p class="blog-post-meta">发布时间:&nbsp;发布者:;访问量:</p>
        <div class="post-content">

        </div>
    </div>
</c:forEach>

<nav>${page}</nav>

</body>
</html>

下面贴出页面效果

这里写图片描述
这里写图片描述

红框的地方则是被装饰页面,其他的地方是基础主题装饰页面default.jsp

到这里本篇文章分享就结束了,望博友们共同学习!

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    java sitemesh 页面框架

    1. **版本兼容性**:较新的Web技术和前端框架可能与Sitemesh存在兼容问题。 2. **复杂性**:对于简单的页面布局,使用Sitemesh可能显得过度工程化。 在提供的压缩包中,"SiteMesh"可能包含了Sitemesh的源码、文档、...

    sitemesh

    现代Web开发中,更多地倾向于使用前端框架如React、Angular或Vue.js来实现类似的功能。 总之,Sitemesh是一个强大的工具,对于构建具有统一视觉风格的多页面Web应用非常有用。通过理解母版和装饰的概念,开发者可以...

    sitemesh3-demo

    7. **响应式设计**: Sitemesh3可以与其他响应式前端框架(如Bootstrap)结合,实现响应式布局,使网站在不同设备上都能良好显示。 8. **模板引擎兼容**: Sitemesh3可以与FreeMarker、JSP、Thymeleaf等多种模板引擎...

    SiteMesh教程及SiteMesh官方文档翻译

    SiteMesh是一款用于Web应用程序中的页面布局和装饰的框架。它采用Decorator模式,通过过滤器(filter)拦截请求和响应,将不同的页面组件如头部(head)、主体内容(content)以及横幅(banner)等组合成一个完整的...

    ssm shiro redis dubbo 小米商城后台管理系统(CMS) H+前端框架

    布局框架:SiteMesh 3.0.1 分布式应用程序协调服务:ZooKeeper 3.3.1 分布式服务框架:Dubbo 2.5.3 接口测试框架:Swagger2 2.6.1 工具类:Apache Commons、Jackson 2.2、fastjson 1.2.20 2、前端 JS框架:Jquery ...

    SiteMesh教程.pdf

    SiteMesh是一种用于Java Web应用的装饰器设计模式框架,主要通过拦截Web页面请求,动态地将装饰页面如头部(header)、底部(footer)、样式表(stylesheet)和脚本文件(scripts)等页面元素与实际页面组合在一起,...

    初试sitemesh实现模块简易整合

    **初试sitemesh实现模块简易整合** Sitemesh 是一个开源的网页...不过,Sitemesh 2.x 版本已较老旧,对于新项目,可能需要考虑使用更新的解决方案,如使用Spring Boot的Thymeleaf或其他现代前端框架来实现类似功能。

    sitemesh jar包

    1. **拦截请求**:Sitemesh作为一个过滤器(Filter)在Web应用的前端,当用户请求一个页面时,Sitemesh会捕获这个请求。 2. **页面装饰**:如果请求的页面被标记为需要装饰,Sitemesh会将页面内容与预定义的装饰...

    sitemesh技术的应用.doc

    在Sitemesh框架下,页面主要分为两类:装饰模板和普通页面。 - **装饰模板**:专门设计用于修饰其他页面的页面,通常包含公共元素如页眉、页脚、导航栏等,以确保整个网站的一致性。 - **普通页面**:即实际承载...

    sitemesh教程

    在更复杂的Web应用架构中,Sitemesh可以与其他框架,如Struts、Spring MVC或WebWork等一起工作,共同构建前端视图层。这些框架通常负责业务逻辑的控制,而Sitemesh则专注于页面的布局和装饰,实现视图的统一风格。...

    sitemesh简单教程页面装配器

    ### Sitemesh简单教程页面装配器 #### 一、Sitemesh概述 Sitemesh是一款用于Web应用中的页面布局管理工具,它通过采用装饰器(Decorator)设计模式,实现了对Web页面布局的灵活管理和重用。传统的Web开发中,...

    ssm项目基础搭建及sitemesh标签

    5. **整合Sitemesh**:Sitemesh是一个页面布局框架,用于统一网站的页面样式。在web.xml中配置Sitemesh Filter,然后在SpringMVC的配置中添加Sitemesh的拦截器。在页面上使用Sitemesh标签(如)来定义页面布局。 6....

    sitemesh的使用和例子

    **Sitemesh** 是一个开源的网页布局和装饰框架,主要用在Java ...同时,随着技术的发展,Sitemesh也有其他替代品,如Spring Boot的Thymeleaf等,但理解Sitemesh的基本原理对理解现代前端框架的工作方式仍然很有帮助。

    网上拍卖(基于SSH架构,采用SiteMesh框架排版,Ajax)

    网上拍卖系统是一个典型的Web应用程序,它利用了Java技术栈中的Spring、Struts和Hibernate(SSH)框架进行构建。...对于学习和理解Java Web开发,特别是SSH框架和前端动态更新技术,这是一个很好的实践案例。

    springmvc的rest风格之六Sitemesh的使用

    **Spring MVC REST风格与...总的来说,Spring MVC的REST风格提供了高效、灵活的接口设计,而Sitemesh则可以帮助我们更好地管理和美化前端展示。这两者的结合,可以在保持后端接口清晰的同时,提升前端的用户体验。

    sitemesh 讲解ppt

    在实际开发中,SiteMesh 可以大大提高工作效率,尤其是在构建大型企业级应用时,通过统一的页面布局,可以保证网站的整体风格一致性,同时降低前端代码的复杂性。对于那些需要频繁更新内容,但页面结构保持不变的...

    一种基于Java和MySQL的物流服务协同平台.pdf

    物流云服务协同管理的基本框架由两部分构成:后端框架以SSH为主,前端框架结合Sitemesh和其他技术。这样的设计保证了业务流程的顺畅执行,同时兼顾了系统的稳定性和用户友好性。 综上所述,该物流服务协同平台通过...

    OSTC开源技术大会-张慧华-DWZ富客户端框架与HTML5

    DWZ富客户端框架,也被称为jUI,是一种基于JavaScript和HTML构建的前端框架,它能提供丰富的用户界面组件,使Web应用具备与桌面软件媲美的交互体验。 首先,我们来解析“DWZ富客户端框架”这一关键词。DWZ是一个...

    mvc框架练习代码

    "bootstrap"是一种前端框架,用于快速开发响应式和移动优先的网页。"jquery"是JavaScript库,简化DOM操作,处理事件和创建AJAX请求。"sitemesh"是一个用于Web应用布局和装饰的开源框架,它可以方便地为多个页面添加...

    个人测试用报表项目(sitemesh+struts2+birt)

    这个项目对于熟悉Java Web开发的人来说,是一个很好的学习和实践平台,涵盖了前端MVC框架、后端页面布局以及报表生成工具的综合运用。通过这个项目,开发者可以深入理解这些工具的协同工作方式,提升在实际项目中的...

Global site tag (gtag.js) - Google Analytics