我的编程空间,编程开发者的网络收藏夹
学习永远不晚

再谈Cocoon兼谈JSP (转)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

再谈Cocoon兼谈JSP (转)

再谈Cocoon兼谈JSP (转)[@more@]

一年前的旧文,今天看来仍有其价值。

 

发信人: HAX(海曦), 信区: webDevelop 标 题: 再谈Cocoon兼谈JSP 发信站: 饮水思源 (2002年06月06日01:17:17 星期四), 站内信件 著名的 IBM DW 中文网站,推出了Cocoon 2的简介教程,从而再次把我们的目光吸引到Cocoon上。以下是我在CSDN的XML讨论区发表的个人看法,贴过来涨点人气。 IBM的这个教程非常好,强烈推荐。BTW,IBM的DW网站比CSDN有用多了。 关于Cocoon,希望有一本《XSP/Cocoon/XML核心技术内幕》,基本上编译了一些基本的Cocoon文档,有一定的参考价值。这也是我看到的国内唯一的一本Cocoon的参考书。但是该书如同其它国内书籍一样,对于基本理念的阐述不够详细和清晰。 Cocoon的原始动力是为了实现Content-Style-Logic的三层分离,这是一个Web Engineer的很好的实践。 Cocoon也源自于以前的ServerPages技术(主要是针对JSP,当然ASP和 PHP也有同样的问题)的缺陷。尽管JSP提出了JSP Model 2,来实现 Model-View-Controller分离,即用JavaBean表示数据(内容),用 servlet控制业务逻辑,用JSP实现显示逻辑和表现层,但还是有些实践上的缺陷。关于这个问题的描述,在2000年10月的文章《JSP 技术 - - 是友还是敌?》(http://www-900.ibm.com/developerWorks/cn/ java/w-friend/index.shtml)中有详尽的讨论。 但是如果我们跟上技术发展的步伐,就会看到这个问题由于标签库技术的成熟和servlet过滤器机制的诞生而得到解决。taglib早就有了,但是直到临近JSTL即JSP Standard Tag Library的正式发布,其威力才真正显现。 从角色任务上看,程序员主要负责JavaBean、Servlet和编写自定义标签库(现在可以使用JSTL从而大大减少负担);设计者编写“不包含 java代码”的JSP,实际上是若干种标记的混合,HTML+JSTL+自定义标签。我认为这种框架比较适合于以Java程序员为主的团队,以及业务逻辑复杂的应用。 注意,正如JSP的内嵌Java代码可以实现业务逻辑,JSP的TagLib技术,一样可以用于实现业务逻辑。当然使用TagLib将比内嵌Java代码好许多,因为代码被封装到了TagLib中,因此对于小的应用还是可以使用JSP,而不用写Servlet。例如使用JSTL的sql tag,来直接处理数据库(这实际上意味着基本没有或者只有极其简单的包含在sql语句中的业务逻辑)。也可以用像之类的tag来处理业务逻辑,虽然通常应该只被用来处理显示逻辑。固然,这些功能会“引诱”一些人过度使用TagLib的能力而破坏了设计原则,但对于原型开发、测试以及轻量级应用,实在是太有用了!如果是企业级应用,相信有能力做企业级应用的程序员,也会有足够的意识来按照MVC模式开发。 apache的struts是一个基于JSP实现MVC的很好的框架,建议有兴趣的同志研究研究。 而Cocoon,用XML表示数据(内容),用XSP(非常类似JSP的XML形式)编写业务逻辑,用xslT实现表示层(HTML、WML、某种格式的XML甚至PDF),并用sitemap(Cocoon 2)集中管理。XSP逻辑单则与JSP的 TagLib从概念到用法非常相似,只是实现方法略有不同。JSP的TagLib 包括一个xml格式的定义文件和实现的Tag类,并被编译使用;而XSP 逻辑单则在运行时(当然可以进行Cache)应用XSLT进行从标记到代码的转换。 (按照我对IBM教程的理解)事实上按照管道的概念,从原始数据到最终呈现可以有任意层,至于如何分层,每个层的用途,则在于设计者。这也是为什么Cocoon被定位于Web发布“框架”。 一个处理流程可以被描述为:(摘自IBM教程)从用户接受请求。确定用来解释该请求并生成响应的适当管道(使用匹配器)。从可用的预配置的组件构造管道。指示管道为请求服务。将由管道生成的响应返回用户,可能对结果进行高速缓存以便以后使用。 在JSP Model 2里,Servlet扮演“调度员”的角色,我们用它来控制任务分派,这有点类似管道所作的事情。事实上,Cocoon就是一个大 Servlet。只是Servlet在2.3之前缺乏管道机制,只能进行简单的 forward和include,如果需要多重处理机制,就不得不依靠扩展库(比如IBM的websphere),或者采用Cocoon。但是现在Servlet有非常强大的filter机制。这使得Cocoon与JSP越来越有结合的趋势。 但Cocoon的特点在于,除了核心功能(Core-Cocoon)之外,它还包括内部组件(包括Matchers、Generators、Transformers、Serializer s、Aggregators等)、内部逻辑单(Response、Sitemap、XSP、XSP- Request、Util、XSP-Cookie、Log等)。这样它就有一个非常适合Web 发布的环境。而使用JSP,相对来说,需要自己进行配置和写部分的基础代码。 从角色任务上看,站点管理员负责定义Sitemap,程序员主要负责XSP 逻辑单,设计者编写XSLT样式表(包括XSLT和目标代码如HTML),因为程序员和设计者都使用XSLT,其实就是在写格式转换,只是编写者需要熟悉如何处理输入和输出(如设计者要面对HTML,程序员要考虑 数据库)。此外,在此之前需要有额外的角色来定义所用到的XML或其他中间格式。我认为这种框架比较适合于非Java程序员为主的团队,管理员只要熟悉XML,程序员和设计者需要掌握XSLT;以及适合于业务逻辑相对简单,而着重于xml数据和灵活的格式转换需求的应用。 -- ※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.15.34]


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

再谈Cocoon兼谈JSP (转)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

再谈Cocoon兼谈JSP (转)

再谈Cocoon兼谈JSP (转)[@more@]一年前的旧文,今天看来仍有其价值。 发信人: HAX(海曦), 信区: webDevelop 标 题: 再谈Cocoon兼谈JSP 发信站: 饮水思源 (2002年06月06日01:17:1
2023-06-03

再谈在Java中使用枚举(转)

再谈在Java中使用枚举(转)[@more@]从C++转到Java上的程序员一开始总是对Java有不少抱怨,其中没有枚举就是一个比较突出的问题。那么为什么Java不支持枚举呢?从程序语言的角度讲,支持枚举意味着什么呢?我们能不能找到一种方法
2023-06-03

经验点谈在JSP中的声明. (转)

经验点谈在JSP中的声明. (转)[@more@]在JSP中的声明:JSP中的声明有两种方法:一种是,另一种是,现在讲讲第二种.1、测试条件:假设有两个页面test1.jsp和test2.jsp都有如下代码:out.print("第"+in
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录