JSP中使用SIteMesh实现类似asp.net母版效果

1.介绍

    SiteMesh的是应用Decorator模式,以允许从表现内容的完全分离一个轻量级的,灵活的Java Web应用程序框架。

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

步骤1

引入JAR包sitemesh-3.0.1.jar

步骤2

WEB-INF目录下创建sitemesh3.xml

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
	<!-- 指明满足“/*”的页面,将被“/master.jsp”所装饰 -->
	<mapping path="/*" decorator="/master.jsp" />
	<!-- 指明满足“/exclude.jsp*”的页面,将被排除,不被装饰 -->
	<mapping path="/el.jsp*" exclue="true" />
</sitemesh>

步骤3

WEB-INF目录下web.xml中加入sitemesh

 <filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
  </filter>  

  <filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

步骤4

建立母版页面master.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><sitemesh:write property=‘title‘/></title>
 <sitemesh:write property=‘head‘/>
</head>
<body>
 <h1 class=‘title‘>SiteMesh example site: <sitemesh:write property=‘title‘/></h1>
 <hr>
 <sitemesh:write property=‘body‘/>
</body>
</html>

步骤5

建立测试页面 test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>这是测试</title>
</head>
<body>
 <p>sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet,scripts and footer,现在,在sitemesh的帮助下,我们可以开心的删掉他们了。如下图,你想轻松的达到复合视图模式,那末看完本文吧。</p>
</body>
</html>

步骤6 完成,效果如下

sitemesh3.xml 配置详解

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

  <!-- 默认装饰器,当下面的路径都不匹配时,启用该装饰器进行装饰 -->
  <mapping decorator="/default-decorator.html"/>

  <!-- 对不同的路径,启用不同的装饰器 -->
  <mapping path="/admin/*" decorator="/another-decorator.html"/>
  <mapping path="/*.special.jsp" decorator="/special-decorator.html"/>

  <!-- 对同一路径,启用多个装饰器 -->
  <mapping>
    <path>/articles/*</path>
    <decorator>/decorators/article.html</decorator>
    <decorator>/decorators/two-page-layout.html</decorator>
    <decorator>/decorators/common.html</decorator>
  </mapping>

  <!-- 排除,不进行装饰的路径 -->
  <mapping path="/javadoc/*" exclue="true"/>
  <mapping path="/brochures/*" exclue="true"/>

  <!-- 自定义 tag 规则 -->
  <content-processor>
    <tag-rule-bundle class="com.something.CssCompressingBundle" />
    <tag-rule-bundle class="com.something.LinkRewritingBundle"/>
  </content-processor>
  ...

</sitemesh>

  

时间: 2024-10-05 23:54:38

JSP中使用SIteMesh实现类似asp.net母版效果的相关文章

JSP中使用SIteMesh实现类似母版效果

1.sitemesh官网 http://www.baidu.com/link?url=vOHcgbkFz2ppR8BWjrPn-RXfc5WtmWxxfmYv8Uf_qnB6C4D5p_-7Q3ap4JXnqGoX 2.介绍 SiteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端.通过SiteMesh的页面装饰,可以提供更

【ModelMap】jsp中显示springmvc modelmap传递的对象

最近在做一个小网站,功能非常基础,决定用springmvc搭建. 遇到一个问题,在controller向前端传值时,比如使用ModelMap传了一个字符串,modelmap.addattribute("msg", "hello"),那么在jsp端,直接使用${msg}就可以显示.接着,如果我传递了一个对象,依然可以使用${obj.name}这样的方法来显示该对象的各个属性.然而更多情况下,都需要显示列表,所以我传递了一个List<User>对象,但是在解

JSP中关于tag的学习

tag作用:编写调用tag实现代码复用.能防止用户直接访问tag页面.Include只能做到代码复用,但是不能防止用户在地址栏直接输入地址访问. 优点:     1.实现代码的复用 2.分离数据处理代码和数据显示代码,便于web应用的维护,和再开发 tag文件的保存:保存在WEB-INF/tags/下 tag标记: 格式一:<Tag 文件名 /> 格式二:<Tag 文件名> 标记体 </Tag 文件名> 在没有标记体的情况下只能用格式一,格式二会将标记体传入tag文件中

如何在Python 2.X中也达到类似nonlocal关键字的效果

nonlocal关键字时Python 3.X中引入的,目的是让内层函数可以修改外层函数的变量值,而该关键字在Python 2.X中是不存在的.那么,要在Python 2.X中达到类型达到类似nonlocal关键字的效果,有方法吗? 答案是肯定的,主要有如下四种方法: 1 将要改变的变量在外层函数声明成global的,这样内层函数就可以改变这个变量的值了,缺点就是所有内层函数都共享一个全局变量的值: def test(start): global state # 将state声明成全局变量 sta

(转)在JSP中调用JAVA类和使用JavaBean有什么区别?

在JSP中调用JAVA类和使用JavaBean有什么区别? 可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类.特殊在可以通过<jsp:useBean   />调用JavaBean而其他类,可以和一般java中一样使用.  Bean的参数中还可以指定范围, <jsp:useBean  scope="application"   />该Bean在服务器的JVM中将只有一个实例. Bean是和WebServer相关的,不同的页面可以通过Bean 交

【Jsp】Jqueryajax技术在Jsp中的应用与javascript中的正则表达式

ajax不是一门新语言,只是一个很平常的即时响应技术,非常简单,一点都不玄虚,就像数据库技术一样能够运用至php,asp.net,asp与jsp等各大网页之中,与网页有着很好的融合性 ajax务必运行在服务器中,因为ajax是一项服务器技术,所以使用ajax在本地的两个未被挂载到服务器上的网页之间,传递数值是不可能的,尽管jquery是本身并不需要挂载到服务器上使用 那么ajax到底是什么呢? 传统的表单的提交有时会带给用户不良的体验, 比如以下的例子: 在jqueryajax.jsp下,有着如

5在JSP中使用数据库

1JDBC JDBC(Java DataBase Connection)是Java运行平台的核心类库中的一部分,提供了访问数据库的API,它由一些Java类和接口组成.在JSP中可以使用JDBC实现对数据库中表记录的查询.修改和删除等操作.使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库. 经常使用JDBC进行如下操作: 与一个数据库建立连接. 向已连接的数据库发送SQL语句. 处理SQL语句返回的结果. 连接数据库的常用方式: 应用程序为了能和数据库交互信息

JSP中EL表达式的应用以及常用的方法

EL表达式      1.EL简介 1)语法结构        ${expression} 2)[]与.运算符      EL 提供.和[]两种运算符来存取数据.      当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []. 例如:          ${user.My-Name}应当改为${user["My-Name"] }      如果要动态取值时,就可以用[]来做,而.无法做到动态取值.例如:          ${sessionScop

(转)Spring3MVC 在JSP中使用@ModelAttribute

原文连接:http://liukai.iteye.com/blog/973717,仅供自己参考. 在教程中,我们将创建一个简单的Spring3MVC simple CRUD应用程序. 什么是@ModelAttribute  Spring3关于@ModelAttribute的文档 引用 @ModelAttribute has two usage scenarios in controllers. When you place it on a method parameter, @ModelAttr