`

sitemesh 项目中的使用

 
阅读更多

sitemesh 项目中的使用

1. 加入lib/sitemesh-2.4.2.jar

2.在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>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
</filter-mapping>

3.从sitemesh-2.4.2.jar 中拷出sitemesh-default.xml 复制到工程的WEB-INF目录下,sitemesh.xml

<sitemesh>
    <property name="decorators-file" value="/WEB-INF/decorators.xml "/>
    <excludes file="${decorators-file}"/>

    <page-parsers>
        <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser "/>
    </page-parsers>

    <decorator-mappers>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
            <param name="property.1" value="meta.decorator"/>
            <param name="property.2" value="decorator"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
            <param name="match.MSIE" value="ie"/>
            <param name="match.Mozilla [" value="ns"/>
            <param name="match.Opera" value="opera"/>
            <param name="match.Lynx" value="lynx"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
            <param name="decorator" value="printable"/>
            <param name="parameter.name" value="printable"/>
            <param name="parameter.value" value="true"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper">
            <param name="decorator" value="robot"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
            <param name="decorator.parameter" value="decorator"/>
            <param name="parameter.name" value="confirm"/>
            <param name="parameter.value" value="true"/>
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
            <param name="config" value="${decorators-file}"/>
        </mapper>

    </decorator-mappers>

</sitemesh>

注意:sitemesh主要用于装饰处理信息,对页面的解析和装饰器配置等等,一般采用默认的即可

配置文件中page-parser 请采用sitemesh.parser.HTMLPageParser 可以解决页面中文乱码问题

4.添加装饰模板decorators.xml配置 文件到WEB-INF  该文件主要用于sitemesh的配置规则。

主要有两个节点:exclude:指定了节点请求不适用任何模板

    decorator:指定了模板的位置和文件名,通过pattern指定那些url使用那些模板

<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/WEB-INF/jsp/decorators">     //指定了模板文件存放的目录
    <excludes>

<pattern>/scripts/*</pattern>   //排除的连接

    </excludes>

    <decorator name="store" page="store_main.jsp">  //指定使用的模板
        <pattern>/omsStore/*</pattern>       //使用装饰的连接
        <pattern>/omsCustomer/*</pattern>
    </decorator>

5.模板页面的定义

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@taglib prefix="sec"
    uri="http://www.springframework.org/security/tags"%>
<%@taglib uri="http://www.springframework.org/security/tags"
    prefix="security"%>
<%@taglib uri="http://www.opensymphony.com/sitemesh/decorator"
    prefix="decorator"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><decorator:title default="********" /> </title>
        
        <link href="<c:url value="/styles/jquery-ui/jquery-ui.css" />"rel="stylesheet" type="text/css" />
        <link href="<c:url value="/styles/tools.css" />"rel="stylesheet" type="text/css" />
        <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/styles/list.css"></link>
                <link rel="stylesheet" type="text/css"
            href="${pageContext.request.contextPath}/styles/jquery.lightTreeview.css"></link>

        <script type="text/javascript"
            src="${pageContext.request.contextPath}/scripts/jquery.lightTreeview.pack.js">
</script>
        <script type="text/javascript"
            src="${pageContext.request.contextPath}/scripts/jquery.js"></script>
        <script type="text/javascript"
            src="${pageContext.request.contextPath}/scripts/pglist.js"></script>
        <script type="text/javascript"
            src="${pageContext.request.contextPath}/scripts/selectOperate.js"></script>
        <script type="text/javascript"
            src="${pageContext.request.contextPath}/scripts/jquery.tools.min.js"></script>
            <decorator:head />
    </head>

    <body>
                <div class="tableBox">
                    <decorator:body />
                </div>
    </body>
</html>

6.总结:1.模板页得作用主要是将功能页中通用的、与业务功能不相关的代码进行分离,统一管理,从而达到代码的重用,如页面布局,css,js等等。

  2.凡是能经过过滤器请求的页面,都可以使用上面的js,css等,页面自身的内容放到<decorator:body />

  3.<decorator:head /> 读取装饰器页面head的内容

  4.<decorator:title/> 读取装饰器页面title的内容

7.常见的问题:

1.在运行过程中无法显示模板页,查看配置的路径(pattern),查看web.xml文件Filter是否采用sitemesh.filter.pageFilter

2.无法显示功能页,只能显示模板页,查看<decorator:body /> 的位置

3.在web logic 中出现了中文乱码,查看sitemesh.xml文件 <page-parsers> 是否采用sitemesh.parser.HTMLPageParser

8.标签:

被用于建立装饰器页面.

<decorator:head />
<decorator:body />
<decorator:title />
<decorator:getProperty />
<decorator:usePage />

被用于从原始内容页面访问装饰器.

<page:applyDecorator />

<page:param />

9.性能问题:

使用sitemesh和不使用sitemesh对于虚拟机堆内存的使用差异不太大,但 是在GC次数上的差异很大。从GC日志的详细信息可以看出,在使用sitemesh时,发生次要GC(Minor GC)的频率非常的高,可以推断在运行时期产生了大量的短生命周期的对象,然后又迅速的被释放,GC在新生代就已经完成了。主要GC(Major GC, Full GC)在使用sitemesh和不使用的情况下,均发生了1次,而且这1次主要GC也是在resin启动中发生的,不是应用在进行压力测试时发生的。由于 使用sitemesh时的GC次数远远大于不使用sitemesh,所以在整个测试过程中,GC上消耗的时间也是差异非常大的。

不使用sitemesh时完成的请求数是使用sitemesh时的144.3%。同时页面响应时间也仅为使用sitemesh时的69.0%。

从上述测试数据来分析,使用sitemesh对于系统性能是有较大的影响的,主要表现在GC的次数会显著增多。建议在大压力、页面内容大的系统中,慎重选择sitemesh,并且使用之前对其带来的性能影响进行一个较为合理、全面的评估。

分享到:
评论

相关推荐

    Sitemesh 3 的使用及配置

    ### Sitemesh 3 的使用及配置 #### 一、Sitemesh 3 简介 Sitemesh 是一个非常实用...通过以上步骤,你可以轻松地在项目中集成并使用Sitemesh 3来实现统一的页面布局和风格设计,提高开发效率的同时也提升了用户体验。

    siteMesh demo+文档

    4. **应用装饰**:通过在JSP页面中使用特殊的注解(例如`&lt;@sitemesh/page&gt;`),或者在Servlet中使用`PageDecorator`接口,可以指示SiteMesh对哪些页面进行装饰。 5. **自定义装饰策略**:如果你的项目有特殊需求,...

    SiteMesh框架在Java项目中的应用.pdf

    SiteMesh框架在Java项目中的应用 SiteMesh是一个非常优秀的页面装饰器框架,它将页面共用的内容放在装饰器页面中,通过对所有用户请求和服务器响应进行过滤,把装饰器中指定的共用内容插入到被装饰页面中,从而形成...

    sitemesh的使用和例子

    1. **添加依赖**:首先,你需要在项目中引入Sitemesh的JAR包。如果使用Maven,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;com.opensymphony&lt;/groupId&gt; &lt;artifactId&gt;sitemesh &lt;version&gt;3.x ``` ...

    SiteMesh教程及SiteMesh官方文档翻译

    要在项目中使用SiteMesh,首先需要在`WEB-INF/web.xml`文件中添加相应的过滤器配置。下面是一段示例代码: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...

    sitemesh网页组合框架 demo

    要在Eclipse工程中使用Sitemesh,首先需要将其依赖库添加到项目中,通常通过Maven或Gradle来管理。接着,需要配置web.xml文件,声明Sitemesh的过滤器(`com.opensymphony.sitemesh.webapp.SiteMeshFilter`),并设置...

    siteMesh使用示例

    在项目中集成 SiteMesh 需要在 `web.xml` 文件中配置 SiteMesh 过滤器。添加以下代码段来配置 SiteMesh Filter: ```xml &lt;filter-name&gt;com.opensymphony.sitemesh.webapp.SiteMeshFilter&lt;/filter-name&gt; ...

    页面装饰器(sitemesh)实例源代码

    通过研究这些示例,你可以更好地理解Sitemesh如何与Openfire配合工作,并将其应用到自己的项目中。 总的来说,Sitemesh通过提供页面装饰功能,简化了Web应用的界面设计,使开发者可以专注于业务逻辑,而无需过多...

    sitemesh框架简单例子

    要开始使用Sitemesh,你需要在你的项目中引入Sitemesh的依赖。如果你的项目是基于Maven的,可以在pom.xml文件中添加对应的依赖项。对于其他构建工具,可以找到相应的库文件并将其添加到类路径中。 接下来,配置...

    java sitemesh 页面框架

    Java Sitemesh是一个开源的页面布局和装饰...通过研究这些资源,你可以更好地理解和学习如何在实际项目中应用Sitemesh。学习和掌握Sitemesh能让你在开发Java Web应用时更加得心应手,提升项目的整体质量和用户体验。

    sitemesh3官方下载包

    Sitemesh3是Sitemesh项目的第三个主要版本,提供了更现代的API和性能改进。 在Sitemesh3的官方下载包中,通常会包含以下几个关键部分: 1. **lib** 目录:这个目录包含了Sitemesh3运行所需的库文件。这些jar文件...

    sitemesh入门demo

    通过学习这个"**sitemesh入门demo**",你可以快速掌握Sitemesh的基本使用,并将其应用到实际的Web项目中,提升页面布局的规范性和一致性。同时,深入理解Sitemesh的工作原理,将有助于你在复杂场景下更好地利用其...

    SiteMesh

    1. **集成SiteMesh**: 将SiteMesh的JAR文件添加到项目类路径中,并在Web应用的`web.xml`中配置SiteMesh过滤器。 2. **创建布局文件**: 设计并创建一个HTML布局模板,定义页面的结构和样式。 3. **配置SiteMesh**: ...

    sitemesh3-demo

    通过阅读这篇博客,你可以深入了解Sitemesh3的配置过程,并将其应用于自己的Web项目中。 在提供的压缩包文件`sitemesh3`中,可能包含了Sitemesh3的库文件、示例项目的源代码、配置文件和其他相关资源。通过学习和...

    ssm项目基础搭建及sitemesh标签

    在web.xml中配置Sitemesh Filter,然后在SpringMVC的配置中添加Sitemesh的拦截器。在页面上使用Sitemesh标签(如)来定义页面布局。 6. **创建实体类**:根据数据库表结构,创建对应的Java实体类,并生成对应的...

    springMVC与sitemesh的结合

    7. **Spring MVC的ModelAndView与Sitemesh**:Spring MVC的Controller返回的ModelAndView对象中的属性可以在装饰器中使用,通过`&lt;decorator:property name="yourModelAttribute"/&gt;`标签访问,实现数据在装饰器和视图...

    使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh

    在本文中,我们将深入探讨如何将 Tiles2 替换为 Sitemesh 在一个基于 Spring MVC 和 Spring Web Flow 的项目中。Sitemesh 是一个流行的页面布局和装饰框架,它可以为我们的应用程序提供统一的外观和感觉。Tiles2 ...

    SiteMesh入门示例

    你可以在每个 JSP 页面中使用 `&lt;%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/page"%&gt;` 导入 SiteMesh 的标签库,以便进行更精细的控制,比如排除某些部分不被装饰。 5. **源码分析**:...

    sitemesh

    在给定的博文链接中,虽然没有直接的内容提供,但通常会涉及sitemesh的使用方法、配置教程以及一些实际应用案例。 **标签:“源码”、“工具”** - **源码**:sitemesh作为一个开源项目,其源代码可供开发者研究和...

    siteMesh框架demo

    然后,我们可以在`decorator.html`中使用特殊的标签(例如`&lt;@sitemesh.content&gt;`)来指定内容区域,这个区域会被实际请求的页面内容替换。 对于需要装饰的每个页面,SiteMesh允许我们在页面上使用特殊的注解(例如`...

Global site tag (gtag.js) - Google Analytics