理解Tapestry引擎
Tapestry的核心是一个引擎对象,这个对象支撑和组织了应用程序的所有层面。引擎将所有的子系统绑定在一起形成了Tapestry应用程序。引擎主要涉及对服务器端状态的管理。引擎管理Infrastructure对象,而Infrastructure对象储存了大多数应用程序范围的状态(Infrastructure 对象中存放了多大39种Tapestry底层对象)。引擎同时也是管理持久页面属性的重要组成部分,当请求转移的时候,持久化页面属性允许页面拥有独立的内部状态。
每一个Tapestry应用程序都拥有一个独立的Servlet,用于连接Servlet容器和应用程序engine对象。应用程序servlet是ApplicationServlet类的一个实例。
Servlet的主要工作是找到并创建应用程序引擎对象的实例,引擎对象被储存在HttpSession中。然后代理所有进程应用程序引擎对象发出请求,引擎对象作为Tapestryservice的代理完成真正的请求响应。
引擎对象是应用程序中枢对象,它掌管着应用程序中的所有功能。它管理各种资源,如页面加载器,页面记录器,以及在请求周期内,为各种页面和组件提供服务。
引擎对象的一个重要工作是指定Tapestry service响应请求,这些service通常被用来创建URL和响应请求。应用程序引擎对象创建和管理请求周期,并捕捉和报道异常。
应用程序引擎对象提供页面记录器给请求周期使用。通过这种方式,它制定了整个应用程序的持久化策略。
在默认情况下,Tapestry使用org.apache.tapestry.engine.BaseEngine类作为默认的引擎对象。如果我们需要实现自己定义的引擎对象,可以创建一个子类继承与BaseEngine类,并在应用程序规范文件中进行配置。
<application name=”MyTapestry4” engine-class=”com.tapestry4.engine.MyEngine”>
引擎主要是通过service()方法,这个方法处理传递进来的请求,并将处理结果打印到客户端浏览器。
在传统的Servlet应用程序中,一个很大的挑战就是对应用程序产生和解析URLs的管理非常复杂。Tapestry通过引擎服务来处理这个问题。引擎服务实际上是请求与组件之间的真实纽带。
传统应用程序的URL有什么问题?
应用程序URLs表现了应用程序中的各种操作。最普遍的方式就是每个操作都拥有一个独立的Servlet,并使用质询参数获取请求中的客户端数据。
对于小型的应用程序,或者大型应用程序的初期阶段,对URL和质询参数的管理并不显得非常复杂,顶多会受到一些命名空间的限制。但是,随着应用程序规模的增大和改变就会产生一个很大的风险。因为JSP与Servlet之间只有非常细小的联系,JSP构造和表现应用程序URL,而Servlet解析那些相同的URL。如同我们前面讨论的那样,JSP与Servlet之间的弱绑定,如果Servlet的映射改变,则每个引用Servlet的JSP都必须被手工检查或修改,以确保产生新的正确的应用程序URL。同样,任何质询的改变将会产生连带影响。
分享到:
相关推荐
【Tapestry笔记】 Tapestry是一个基于Java的Web应用框架,它采用了面向组件的开发方式,这使得它与其他如Structs、WebWork、SpringMVC等采用传统面向元素开发方式的框架有所不同。面向组件的开发模式旨在克服面向...
### Struts2学习笔记知识点详解 #### 一、Struts2框架概览 **起源与发展:** Struts2是WebWork框架的后续版本,融合了Struts1和WebWork的优点,形成了一种更为先进和灵活的MVC框架。相较于Struts1,Struts2在设计...
AppFuse 是一个开源项目,旨在加速和简化J2EE应用程序的开发流程。由Matt Raible设计,它作为一...通过深入阅读和实践AppFuse的学习笔记,开发者可以逐步掌握其核心功能,并将其应用到实际项目中,提升开发质量和效率。
本学习笔记将深入探讨Spring 3.0 MVC框架,帮助读者理解并掌握其主要特性。 首先,Spring MVC设计的核心理念是高度可配置性。每个功能模块都可以根据需求进行定制,这意味着开发者可以根据项目需求调整框架的工作...
Struts2提供了丰富的插件和集成框架,可以与其他技术如Spring、Hibernate等无缝配合,提供了如JSF、Tapestry、SpringMVC等视图层框架的替代方案。面向接口编程、面向组件编程和面向方面编程的思想在Struts2中得到了...
Spring框架还支持与第三方框架的集成,例如Struts、Tapestry、JSF和WebWork。此外,Spring还提供了Spring Boot项目,旨在简化Spring应用的初始搭建以及开发过程。Spring Boot通过提供默认配置简化了项目配置,使得...
AppFuse 是一个开源项目,专为加速 J2EE 应用程序开发而设计。...通过本文的学习,读者将能够熟练运用 AppFuse,体验其带来的高效和便捷。同时,结合 Ant 脚本,开发者可以灵活地管理和构建项目,进一步提高开发效率。