JiveJdon Community Forums
在线343人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 2 回复 / 1
 发表新帖子   回复该主题贴
wwlhp@jdon.com

悄悄话
发表文章: 111
注册时间: 2003年06月03日 17:19
装饰模式在jsp tag extension中的应用 2003年12月08日 10:57 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 decorator模式(17)     
jsp中的标签定制可以帮助来更好的实现 presentation layer。

我在学习的时候,感觉最困惑的就是 BodyContent。API 和 specification 中对 BodyContent 介绍的非常少。后来我就看了BodyContent 的源码和一些jsp 翻译过来的java 源码,才算有了比较清楚的了解。下面是我的理解:

BodyContent 类对JspWriter 实现了装饰模式,其实也算不上装饰,只是为了实现JspWriter 的层层包装。对于一个两层的嵌套标签,

<c:parent>
parent
<c:child>
child
</c:child>
</c:parent>

容器在处理parent 标签时,创建一个BodyContent 对象,这个BodyContent 对象包装了真正的响应流,然后让隐含的out 引用指向这个BodyContent 对象。于是,"parent"就被写入到BodyContent,而不是响应流。

接下来,容器处理child标签。同样创建了一个BodyContent 对象,这个BodyContent包装了parent 标签的BodyContent,然后把这个BodyContent 对象赋给out引用。于是,"child"就被写入到这个BodyContent 对象。

这时,就形成了3 层的流包装。最内层标签的BodyContent 在流包装的最外层,流包装的最内层是真正的响应流。标签的嵌套顺序和流的嵌套顺序是反向的。每一层流包装中都有一些被输入的内容。

然后,最内层标签处理器的doAfterBody () 方法中,调用
bodyContent.writeOut (getEnclosingWriter ())
把自己的BodyContent 中的全部内容写入到内层的流中,然后最内层标签的BodyContent 就从流包装层次中剥离出来。每一层标签都是如此,这样所有标签的正文内容最终会被写入流包装的最内层,即真正的响应流。
banq

悄悄话
发表文章: 9485
注册时间: 2002年08月03日 17:08
Re: 装饰模式在jsp tag extension中的应用 2003年12月16日 21:38 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
好文章,我在使用时感觉似乎是这样,想不到你分析得这么透彻.
banq

悄悄话
发表文章: 9485
注册时间: 2002年08月03日 17:08
Re: 装饰模式在jsp tag extension中的应用 2003年12月16日 21:44 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
好文章,我在使用时感觉似乎是这样,想不到你分析得这么透彻.
这个主题有 2 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  发贴前查询 标签列表勿重复发表问题

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam