Engine service是实现了IEngineService接口的对象,他包含很多创建和服务应用URL的方法;其主要方法public void service(WebRequest request, WebResponse response)
cycle = _infrastructure.getRequestCycleFactory().newRequestCycle(this); 获得RequestCycle
service = cycle.getService();
// Let the service handle the rest of the request.
service.service(cycle);
其中newRequestCycle(this) 就是对url 路径的解析处理
public IRequestCycle newRequestCycle(IEngine engine)
{
WebRequest request = _infrastructure.getRequest();
QueryParameterMap parameters = extractParameters(request);//常规处理request参数
decodeParameters(request.getActivationPath(), request.getPathInfo(), parameters);//调用encoders 来解析路径,例如DirectServiceEncoder,就解析出PAGE,extension,COMPONENT等信息
//对于DirectServiceEncoder encoding.setParameterValue(ServiceConstants.SERVICE,
Tapestry.DIRECT_SERVICE); DIRECT_SERVICE名称在此类是固定值
String serviceName = findService(parameters);
IRequestCycle cycle = new RequestCycle(engine, parameters, serviceName, _environment);
_requestGlobals.store(cycle);
try {
_requestGlobals.store(_responseDelegateFactory.getResponseBuilder(cycle));
cycle.setResponseBuilder(_requestGlobals.getResponseBuilder());
} catch (IOException e) {
throw new ApplicationRuntimeException("Error creating response builder.", e);
}
return cycle;
}
从而得出Direct路径格式 /PageName,componetIdPath.ext?otherParam
PageServiceEncoder: /PageName.ext
AssetEncoder: String fullPath = _path + ((digest != null) ? "/" + digest : "/" + DIGEST_STATIC) + path; 即 /static/path
ServiceExtensionEncoder: encoding.setServletPath("/" + service + "." + _extension);
分享到:
相关推荐
3. **请求处理**:当用户发送HTTP请求时,Tapestry会解析URL,确定要调用的页面和方法,然后执行相应的业务逻辑并生成响应。 **三、Tapestry 3 的关键特性** 1. **状态管理**:Tapestry 3自动管理组件的状态,支持...
1. **请求处理**:当用户发起HTTP请求时,Tapestry会解析请求参数,确定目标页面和组件。 2. **组件实例化**:根据页面和组件定义,Tapestry 创建必要的组件实例。 3. **状态管理**:Tapestry 自动处理组件状态的...
**Tapestry API 深度解析** Tapestry,作为一个强大的MVC(Model-View-Controller)结合模板技术的Web开发框架,为Java开发者提供了一种高效且灵活的构建Web应用程序的方式。它通过组件化的设计,使得代码更加模块...
框架自动处理URL到页面组件的映射,使得开发者可以轻松地创建链接和表单提交,而无需编写复杂的URL解析代码。同时,Tapestry4支持页面级和应用程序级的事件处理,允许组件之间进行通信和协作。 此外,Tapestry4具有...
1. **简单性**:Tapestry通过对象、方法和属性来替代URL和查询参数,减少了开发过程中常见的繁琐任务,如解析参数、处理HttpSession。这使得开发者可以专注于核心业务逻辑,而不是底层的连接代码。 2. **一致性**:...
它提供了页面、组件、事件处理、URL映射等功能,是构建Tapestry应用的基础。 3. **Plastic**:`plastic-5.3.8.jar`是Tapestry的一个子项目,负责在运行时动态地创建和修改类。它使得Tapestry能够实现一些高级特性,...
每个用户请求都会经过一系列的服务,包括URL解析、页面加载、事件处理和响应生成。 ### 七、Designing Tapestry Applications 设计Tapestry应用涉及多个步骤,包括确定存储策略、页面流、共享逻辑、引擎服务和常用...
- **URL映射:**Tapestry通过URL映射将请求路由到正确的组件。 - **参数解析:**从请求URL中提取参数并传递给组件。 **2. 组件处理:** - **组件实例化:**根据请求创建组件实例。 - **组件状态管理:**维护组件的...
- **参数解析**: Tapestry 能够自动解析 URL 中的参数,并映射到相应的组件或页面。 **3.5 增加更多的连接** - **多个 DirectLink**: 在一个页面中可以放置多个 DirectLink,以提供更多的导航选项。 **3.6 连接里...
Tapestry 采用了 RESTful 的设计原则,允许开发人员定义清晰、简洁的 URL 结构。此外,框架还提供了自动的参数映射功能,使得处理 URL 参数变得非常简单。 #### 三、Apache Tapestry5 应用开发流程 ##### 3.1 准备...
《Tapestry开发指南9.0》是一本深入解析Tapestry框架的权威教程,针对的是版本9.0。Tapestry是Apache软件基金会开发的一个Java Web应用框架,旨在提高开发效率,提供高度模块化和可维护性的Web应用。本指南详细介绍...
【Tapestry5开发文档】深入解析 Apache Tapestry 是一个强大的Java Web应用程序框架,它以组件为中心,为开发者提供了一种高效、易用且高度模块化的开发方式。Tapestry5版本带来了许多改进和增强,包括更好的性能、...
### Tapestry开发指南知识点解析 #### 一、Tapestry框架概述 Tapestry是一种用于构建高度可扩展、模块化且易于维护的Web应用程序的Java框架。它采用组件导向编程模型,将页面分解为可复用的组件,使得开发者可以...
它消除了许多与查询参数解析、HTTPSession 处理、URL 构建等相关的重复任务。 2. **一致性**:Tapestry 提供了一致的方式来开发 Web 应用程序的页面。所有的页面都由相同的可重用组件构成,这有助于降低学习成本和...
《Tapestry用户手册》深度解析 一、Tapestry概览与核心概念 Tapestry是一款基于Java的Web框架,旨在简化复杂Web应用的开发流程。它通过将UI组件和业务逻辑分离,实现了高度模块化的开发模式。在Tapestry的世界里,...
通过消除繁琐的“衔接”代码,如解析查询参数、管理HttpSession等,Tapestry帮助开发者专注于业务逻辑,从而降低了代码量,提升了开发效率。 3. **一致性与可复用性**: Tapestry提供了统一的方式来构建Web应用...
描述中的“博文链接:https://yongganzhe.iteye.com/blog/41176”虽然没有提供具体的信息,但通常博客文章会包含作者的经验分享、技术解析或者教程,可能是对Tapestry框架的深入探讨或实际应用案例。在阅读这篇博客...