页面修饰框架SiteMesh的简单使用
2019独角兽企业重金招聘Python工程师标准>>>
SiteMesh框架是由OpenSymphony组织来开发的,下载地址:http://www.opesymphony.com/sitemesh/download.action
使用步骤:
将下载的sitemesh-2.4.jar文件复制到Web应用的lib下
为了能是SiteMesh框架可以处理所有的用户请求,修改web.xml文件,配一个Filter,class为com.opensymphony.module.sitemesh.filter.PageFilter, url-mapping 为/*
要在Jsp页面中使用SiteMesh的标签库。还要导入SiteMesh的标签库,SiteMesh提供了两个标签库,一个是page还有一个是decorator
本文为大家展示一个简单的SiteMesh例子。
首先创建一个web工程.名字就叫做SitemeshSample.将sitemesh-2.3.jar放到lib目录下。
在web.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>
这里定义了一个过滤器.所有的请求都交由sitemesh来处理
在WEB-INF下创建一个decorators.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/decorators">
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
这是定义了模板页,也就是所有页面在返回给客户端之前,先在这里加上装饰,套上模板。
defaultdir="/decorators"说明了模板页的路径。<decorator name="main" page="main.jsp">模板页的名称。 <pattern>/*</pattern>表示对所有的response进行处理
在web下面建一个文件夹取名decorators.在decoratots下面创建上面定义的模板页面main.jsp,内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><decorator:title />
</title>
<body>
<p>Add head decorator...</p>
<decorator:body />
<p>Add foot decorator...</p>
</body>
</html>
说明:
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
此处为decorator标签的声明。因为我们下面要使用到它
<decorator:title />
把请求的原始页面的title内容插入到<title></title>,比如我们要请求index.jsp页面的时候。会把index.jsp中的title的内容放入到这里
<decorator:body />
把请求的原始页面的body内容插入到<body></body>,发现没有我们在这句的前面加上了<p>Add head decorator...</p>和<p>Add foot decorator...</p>
相当于给我们请求的页面的body内容加上了头部和尾部.实现了模板功能。
在WEB-INF下创建我们要请求访问的页面index.jsp,内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SiteMesh Sample Site</title>
</head>
<body>
Welcome to the SiteMesh sample...
</body>
</html>
把web工程部署到tomcat容器中。
输入http://localhost:8080/SitemeshSample/index.jsp
页面效果如下:
Add head decorator...
Welcome to the SiteMesh sample...
Add foot decorator...
不难发现,我们index.jsp中只有Welcome to the SiteMesh sample... 一句。但是在返回给我们之前套上了main.jsp模板页。在它的前面和后面分别加上了一句话。通过Sitemesh我们可以很容易实现页面中动态内容和静态装饰外观的分离。
转载于:https://my.oschina.net/china008/blog/335396
页面修饰框架SiteMesh的简单使用相关推荐
- idea ssm框架 mysql_idea搭建简单ssm框架的最详细教程(新)
为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...
- openshift_云上的播放框架变得简单:Openshift模块
openshift 仅仅几年前,找到一个负担得起的Java Web应用程序托管解决方案是一项艰巨的任务,而寻找免费的托管解决方案是一项不可能的任务. 更不用说考虑自动缩放,单命令部署,持续集成等问题了 ...
- 云上的播放框架变得简单:Openshift模块
仅仅几年前,找到一个负担得起的Java Web应用程序托管解决方案是一项艰巨的任务,而寻找免费的托管解决方案是一项不可能的任务. 更不用说甚至考虑自动缩放,单命令部署,持续集成等事情,这都是科幻小说. ...
- 【RuoYi框架】RuoYi框架学习超简单案例 - 新闻管理系统(附源码)
文章目录 前言 一.需求 二.数据库设计 1.新闻菜单表(树表) 1.新闻内容表 三.运行RuoYi项目 1.创建数据库,运行sql文件 2.启动运行RuoYi项目 四.生成代码 1.添加字典(菜单显 ...
- 如何利用laragon框架制作一个简单的应用?
如何利用laragon框架制作一个简单的应用? 一.搭建环境 1. 安装Laragon 1.1 打开安装包用的语言 选择自己习惯用的语言 1.2 选择安装地址 1.3 选择Next,开始install ...
- 使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户、物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline
使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户.物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline 一.项目简 ...
- 网购电商管理系统 nodejs中express框架 mysql数据库 web开发 B/S框架 ejs模板 简单服务器开发
背景介绍 这个"大项目"开发背景是大二上的C++课设,王老师不明所以的就让我们制作一个类商用的网店管理系统,而且不限制语言,不限制框架,独立完成,时间大约10周.说实话这个项目对刚 ...
- 页面调度框架 justep.Shell
1.wex5首页模板实现了页面调度框架功能,来实现调度到所定义的页面.和windowdialog有所不同: 1)多数情况下使用页面调度这种方法. 2)页面调度框架页面没有返回值,windowdialo ...
- 广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B...
广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B 注:域名B为afish.cnblogs.com 域名A页面代码: <!DOCTYPE html PUBLIC ...
- 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...
页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...
最新文章
- ADAS越来越热,这家公司为何能俾睨群雄
- 【项目管理】上线切割计划实践
- qt百度地图html,Qt的QWebChannel和JS、HTML通信/交互驱动百度地图
- mysql中count(*)和count(1)和count(column)区别
- 独家=垄断?从抖音快手电影宣发签独家谈起
- 经验总结:图书管理系统java课程设计
- linux下软件的卸载,Linux下各种格式软件的安装及卸载方法
- Pthon入门--range()函数
- Linux Server - NIS
- android 按键,Android 7.0 Power 按键处理流程
- 决策树后剪枝算法(二)错误率降低剪枝REP
- 如何编写好的软件设计文档
- MAVEN 修改为阿里数据源
- 湖南大学计算机考研科目2020,2020湖南大学计算机与软件工程考研初试科目、参考书目、录取情况全解析...
- Js 获取当前时间上一个月 YYYY-mm
- 通过全局钩子发送自定义消息,实现进程通信
- 快速让网站内容可以复制
- 新浪,腾讯原生态SDK分享
- JavaScript基础题目(附答案)
- 《富爸爸,穷爸爸》读后感——怎么实现财务自由
热门文章
- OSPF —— 重分发(配置命令)
- 无法卸载和重装photoshop CS3 的解决办法
- ubuntu硬盘序列号怎么查询_如何在Linux中查找硬盘的详细信息?
- 学校计算机房主机系统,学校机房电脑系统恢复的方法
- 我的知识管理工具列表
- 锐捷linux客户端进路由器,锐捷WLAN无线产品之SSH管理
- 电脑网银服务器无效响应,台州银行网银管家
- 计算机操作系统汤小丹版课后答案
- 面向对象的数据库db4o: 初识db4o
- jbd2 mysql_jbd2 BUG · xiewen/xiewen.github.io Wiki · GitHub