页面修饰框架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是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...
最新文章
- 低版本IE浏览器不支持前端代码修改属性remove()的解决办法
- IP协议号(TCP协议号/UDP协议号)
- sql导航函数 NTH_VALUE
- 12、mybatis返回map单条及多条记录
- destoon 屏蔽会员组,让个人,游客不显示
- ABAP 标准培训教程 BC400 学习笔记之二:Cross-client 和 Client-specific 的区别
- codeforce 804B Minimum number of steps
- 第一 二章 计算机基础知识,[精品]第二章-计算机基础知识.doc
- MySQL求n以内素数_C++ 实现求小于n的最大素数的实例
- python django 网页 html \n不换行
- 高程计算 高程计算 高程计算
- 荒野行动android模拟,荒野行动用模拟器玩教程 荒野行动模拟器不支持机型解决方法...
- 西门子S7200PLC连接CHNet-S7200PD实现以太网通信配置方法
- Cmake编译时无法打开包括文件: “pthread.h”
- rabbitmq完整学习-springboot整合rabbitmq
- 本周上榜的这9本原创技术书很赞,《数学之美》作者吴军博士新书霸榜
- Android 网络属性详解
- 前端开发Vue项目实战:电商后台管理系统(八)------ 订单管理模块
- 天池案例-贷款违约预测(lgb)
- CRM系统的价值效益