一、Sitemesh简介

Sitemesh是由一个基于Web页面布局、装饰及与现存Web应用整合的框架,是一个装饰器。它能帮助我们在由大量页面工程的项目中创建一致的页面布局和外观,如一致的导航条、一致的banner、一致的版权等。

SiteMesh是基于Servlet的filter的,它通过截取response,并进行装饰后再交付给客户端。

二、spring boot 集成 sitemesh

集成要做的工作很简单:

1、引入sitemesh.jar包

2、添加一个配置类及过滤器类

3、新增一个装饰器页面

2.1、引入sitemesh.jar包

在maven的pom文件中引入:

<dependency>

<groupId>org.sitemesh</groupId>

<artifactId>sitemesh</artifactId>

<version>3.0.1</version>

</dependency>

2.2、配置类及过滤器类

配置类如下:

import org.springframework.boot.web.servlet.FilterRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

//生效配置,使之就像传统项目里sping的xml配置文件一样

@Configuration

public class WebConfig extends WebMvcConfigurerAdapter{

//注册成bean,就像传统项目spring配置文件中的<bean>标签

@Bean

public FilterRegistrationBean siteMeshFilter(){

FilterRegistrationBean fitler = new FilterRegistrationBean();

//实例化一个过滤器类

WebSiteMeshFilter siteMeshFilter = new WebSiteMeshFilter();

fitler.setFilter(siteMeshFilter);

return fitler;

}

}

过滤器类如下:

import org.sitemesh.builder.SiteMeshFilterBuilder;

import org.sitemesh.config.ConfigurableSiteMeshFilter;

public class WebSiteMeshFilter extends ConfigurableSiteMeshFilter{

@Override

protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {

//除了/admin/index和/admin/login页面外,其他所有/admin/下的页面都被/admin/index页面所装饰

builder.addDecoratorPath("/admin/*", "/admin/index")

.addExcludedPath("/admin/index")

.addExcludedPath("/admin/login");

}

}

2.3、装饰器页面

装饰器页面就是模板页面,过滤器规则中定义的页面都会被该页面所装饰。

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>

<title>装饰器页面</title>

</head>

<body>

...

<div id="content">

<sitemesh:write property='body' />

</div>

</body>

</html>

有了上面的装饰器页面,当我们访问被装饰的页面比如/admin/test,展现的内容是装饰器页面+被装饰页面的body元素内的内容,<sitemesh:write property='body' />处会被替换为被装饰页面的body元素内的内容。假设,test页面如下:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>

<title>test页面</title>

</head>

<body>

<h1>我是test</h1>

</body>

</html>

最终得到的页面是:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>

<title>装饰器页面</title>

</head>

<body>

...

<div id="content">

<h1>我是test</h1>

</div>

</body>

</html>

spring boot 集成 sitemesh相关推荐

  1. Spring Boot集成Swagger导入YApi@无界编程

    接口APi开发现状 现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率. 但是如果接口很多,你一个个手工在YApi去录入无疑效率很低. 如果是使用Spring ...

  2. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例...

    本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...

  3. 6.3 Spring Boot集成mongodb开发

    6.3 Spring Boot集成mongodb开发 本章我们通过SpringBoot集成mongodb,Java,Kotlin开发一个极简社区文章博客系统. 0 mongodb简介 Mongo 的主 ...

  4. springboot(十八):使用Spring Boot集成FastDFS

    上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Spring Boot将文件上传到分布式文件系统FastDFS中. 这个项目会在上一个项目的基础上进行构建. 1.pom包 ...

  5. Spring Boot集成Hazelcast实现集群与分布式内存缓存

    2019独角兽企业重金招聘Python工程师标准>>> Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸 ...

  6. Spring Boot 集成 Swagger 生成 RESTful API 文档

    原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...

  7. 【Java进阶】Spring Boot集成ES

    目录 spring boot集成ES ElasticSearchConfig 测试文档的基本操作 Elasticsearch Clients 文档 spring boot集成ES Java REST ...

  8. Spring Boot集成Jasypt安全框架

    Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...

  9. Spring Boot集成JPA的Column注解命名字段无效的问题

    偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名. Spring Boot版本:1.5.4.release 数据表: id int, userNam ...

  10. Spring Boot集成CKFinder

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot集成CKFinder,实现浏览功能. 前言 上一篇记录了Spring Boot集成CKEditor,这里 ...

最新文章

  1. 用一个创业故事串起操作系统原理(四)
  2. mysql 查询二维数组_sql数据库查询结果存入二维数组,结果都是0?求帮助
  3. 阿里巴巴将赴NIPS 2017 3大事业部联袂展示AI全技能
  4. 自适应滤波器在matlab仿真的程序_电气信息类专业课程之matlab系统仿真 第五章 BPSK通信系统(3)...
  5. JAVA入门级教学之(while循环语句)
  6. 浏览器存储,储存,Cookie,WebStorage,IndexedDB
  7. 框架中要懂的一些术语
  8. 【渝粤教育】电大中专电子商务网站建设与维护 (13)作业 题库
  9. 征信考量社交化和大数据化
  10. python 编译成exe vmp加密_加密软件VMProtect入门教程
  11. 【Java】转义字符
  12. openfire+XMPP实现即时通讯
  13. 常见js针对浏览器之间的兼容问题
  14. 闲谈摩根 --兼答关于JP摩根和摩根斯坦利的渊源和区别,其他的摩根八卦
  15. matsuri.icu 筛选单场直播中 指定用户的弹幕
  16. STM32之时钟输出功能
  17. 【python】——setup.py build_ext --inplace命令解析
  18. Zabbix(一):server,agent端 安装配置及主机,监控项,触发器,动作,媒介配置步骤...
  19. happyiness analysis
  20. 热电阻和热电偶的区别

热门文章

  1. 宋健人口模型 matlab,一阶常微分方程模型-人口模型与预测
  2. java smtp服务器,用Java实现SMTP服务器
  3. Snake算法与遥感影像应用,python matlab对比
  4. C语言小知识——uthash使用
  5. matlab 7.0电路图,基于Multisim10和Matlab7.0的正弦稳态电路分析
  6. Multisim 10 添加可调电阻
  7. WIN10杜比音效驱动安装[蓝奏云]
  8. EasyRecovery注册码哪里有?
  9. 计算机组成原理慕课第六章答案,计算机组成原理单元答案2020MOOC
  10. mt950报文解析_MT700报文升级的内容分析及对信用证实务操作的影响