博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)
阅读量:5884 次
发布时间:2019-06-19

本文共 2650 字,大约阅读时间需要 8 分钟。

一、SiteMesh介绍

SiteMesh是一个Java WEB项目的网页布局和修饰框架。使用SiteMesh后就不再需要在每个页面中都用<jsp:include>标签引入页头、页尾、导航等其他公用页面了。

  • 可以将网页的内容和页面结构分离,达到页面结构共享的目的。

  • 页面装饰效果耦合在目标页面中,无需使用include指令显示包含装饰效果,目标页面和装饰页面完全分离

  • 整个web应用可以使用相同的装饰页面,风格统一,整体效果更好

  • SiteMesh通过Filter拦截请求和响应,给原始页面加入装饰,再把装饰后的结果返回给客户端。

  • 根据页面URL匹配规则查找合适的装饰模板页

  • 提取被访问页的内容,放置到装饰模板中的适当位置。

 

二、业务场景使用

比如常见的就是crm系统,左边的树形菜单就是一致的,变化的右边主体部分(即被装饰的页面)。

 

 

三、SiteMesh工作原理

  sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner、bottom结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer。见下图

当用户请求home.jsp,并且服务器处理完毕正准备返回数据之时,它被SiteMesh Filter拦截了下来,并且把数据包装成一个Page对象,具体是Page page = parsePage(request, response, chain)的调用,然后,它会去查询decorators.xml文件,看看该页面是否需要装饰[if (decorator != null && decorator.getPage() != null)]?是,则应用装饰器[applyDecorator(page, decorator, request, response)],否则,就发送原来的没经过装饰的页面[writeOriginal(response, page);]。

 

四、sitemesh应用配置

首先我们要到http://www.opensymphony.com/sitemesh/下载我们需要的jar包:sitemesh-2.4.jar

然后分三步走,第一步:web.xml配置;第二步:decorate.xml配置;第三步:装饰页面

4.1 web.xml配置

    
        
sitemesh
        
com.opensymphony.sitemesh.webapp.SiteMeshFilter
    
    
        
sitemesh
        
/*
    

4.2 decorate.xml 配置

在WEB-INF目录下新建一个decorators.xml文件(/decorator是你的包装jsp根路径在这里main.jsp和panel.jsp都是包装jsp,a.jsp,b,jsp是被包装jsp)

    
        
/resources/**
        
/system/login_index.do
        
/system/login.do
        
/system/close_window.do
        
/system/login_force.jsp
        
/system/info.jsp
        
/index.jsp
        
/usermemcached/**
    
    
        
/**
    

用decrator指定装饰模板与URL的对应关系,也可以用excludes配置那些URL不需要模板控制。

4.3 装饰页面

<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>       <decorator:title default="default title"/>      
    
 >        
                
                    
                        
X                        
                                                    
                
                ......    
  

参数说明:

<decorator:head />

    填充被装饰页面的head标签内容

<decorator:body />

    填充被装饰页面的body标签内容

本文转自lzwxx 51CTO博客,原文链接:
http://blog.51cto.com/13064681/1944362

转载地址:http://jdmix.baihongyu.com/

你可能感兴趣的文章
SSH 通过密钥登录
查看>>
今天只是一个开始
查看>>
Mycat读写分离以及拆库拆表综合实验2:部署配置mycat读写分离与拆库拆表
查看>>
程序至上
查看>>
Linux系统详细启动流程
查看>>
高性能golang后端处理网络模块包
查看>>
android面试题
查看>>
test
查看>>
郭宇:Airpub - 纯前端博客引擎实践
查看>>
Progress Image View
查看>>
开源 免费 java CMS - FreeCMS1.5-数据对象-job
查看>>
开源 java CMS - FreeCMS2.3字典管理
查看>>
开源 java CMS - FreeCMS2.4 模板管理
查看>>
理解HTTP session原理及应用
查看>>
JNI学习积累之三 ---- 操作JNI函数以及复杂对象传递
查看>>
maven环境快速搭建
查看>>
什么是单链表插入排序?
查看>>
mycncart 商品筛选 filter 模组设定教程
查看>>
【转】杰奇 jieqi 多线程自动采集同步源站 python源码
查看>>
Lucene6.0学习笔记——查看分词结果
查看>>