`
chinajavawolf
  • 浏览: 117079 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

(A19)Tapestry Core :Request Processing

阅读更多
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  
请求处理
理解请求处理管道是非常重要的,因为这是Tapestry的一个主要扩展点。
大量的早期处理阶段是可扩展的管道(pipelines)形式。
Tapestry 过滤器
所有引入的请求都由配置在应用的web.xml里的TapestryFilter发起。
TapestryFilter负责一系列的启动和初始化功能。
当他收到一个请求时,TapestryFilter获得HttpServletRequestHandler服务并且调用它的service()方法。
HttpServletRequestHandler 管道
这个管道执行请求的初始化处理。它可以通过贡献一个HttpServletRequestFilter HttpServletRequestHandler服务的配置里被扩展。
Tapestry不用贡献任何过滤器到这个它自己的管道中。
管道终结器做两件事:
1.        它存储请求和响应到RequestGlobals服务里。这是个存储每个线程或每个请求信息的线程服务
2.        它包裹这个请求和响应作为一个RequestResponse,然后传递他们到RequestHandler管道里。
RequestHandler 管道
这个管道大部分的扩展涉及请求发生。Request表现为一个HttpServletRequest之上的抽象;这是支持非servlet应用必需的,比如像portlet应用。在Tapestry内的其他代码与服务要求获得请求中的信息,如查询参数,该信息从Request(Response)对象中被获得。
这个管道包括许多内建的过滤器。
1.        CheckForUpdates负责类和模版的重载。
2.        Localization 确定用户的本地化。.
3.        StaticFiles为静态文件(存在于web上下文内的文件)和中断请求检查URLs,这样servlet容器可以正常的处理请求。
4.        ErrorFilterTapestry底层捕获未捕获的异常并且呈现这个异常的报告页面。它调用alias:RequestExceptionHandler服务负责初始化和呈现core/ExceptionReport页面。
终结器为这个管道存储RequestResponseRequestGlobals内,然后MasterDispatcher服务决定如何处理这个请求(如果它是,确实是,一个Tapestry请求)。
MasterDispatcher 服务
MasterDispatcher服务是一个链的指挥,聚集在一起(在一个特定的顺序),Dispatcher对象. 每个Dispatcher建立认识和处理特定种类的URL.
lRootPath
在别处(elsewhere Configuring Tapestry)讨论的时候,请求的上下文 root将替换为加工过的像呈现请求对应”start”页面一样。
l Asset
请求用”/assets”关联存储在classpath上,在Tapestry JARs(或者在组件库的JAR内)内的asset resources(asset资源)。请求文件的内容将被抽取下来给客户端浏览器。
l PageRender
页面呈现请求是呈现一个特殊页面的请求。这样的请求可以在路径上包括附加的元素,它将被加工为活动的上下文(通常来说,这是一些相关的实体对象的主键),允许页面重建状态这需要它成功的呈现自身。
事件处理器方法对于活动的事件应该返回一个值;这个值被加工为和从组件动作请求返回值相同; 通常这将导致重定向到另一页. 这样,活动事件可以在页级别进行简单的验证 ("用户能看到这一页?") .
页面呈现由页面的逻辑名加上路径元素组成的URLs给活动的上下文。调度器在这剥离他们的路径直到找到一个已知的页面名。这样,”/mypage/27”将首先寻找名为”mypage/27”的页面,然后寻找页面名为”mypage”的页面。假设第二次查找是成功的,这个页面将被激活使用上下文”27”,如果没有逻辑页面名可以被确定,控制交给下一个调度器。
l  ComponentAction
组件动作调度器被用来触发组件内的事件。
URL标识页面名后面是一系列的组件id(从页面到特定的组件的路径),接下来是被组件触发的事件名。其余路径元素作为事件的上下文 (目前不适用活动页)                            例如,"/griddemo.FOO.BAR/3"将查找页面”griddemo”,然后是组件”FOO.BAR”,然后触发一个事件指定名为”action”(默认的事件类型,在URL中省略),使用上下文”3”
如果页面被怀疑有一个活动的上下文,它被提供一个附加的参数在link上。
万一事件类型不是默认的,”action”将出现在嵌套的组件id和事件上下文之间,前面加上冒号。例如:"/example/foo.bar:magic/99"将触发一个”magic”类型事件。这在Tapestry框架中不是常用的,但可能更常用来做为Ajax特性(将不使用正常的请求逻辑)被执行。
来自于组件动作请求的响应是典型的,但不是普遍的,用来发送一个重定向给客户端;重定向的URL是一个页面呈现URL用来显示响应给事件。这在页面导航(page navigation.)里有详细说明。
RequestGlobals 服务
RequestGlobals服务拥有每一个线程的生命周期,因此,对于每个线程,这意味着每个线程里存在一个独立的实例。这两个处理器管道的终结器存储一对请求/响应到RequestGlobals服务里。
Request 服务
Request服务是一个RequestGlobals服务请求性质的影子。就是说,任何在这个服务上调用的方法都被委派给存储在RequestGlobals内的请求对象。
这个服务是容易访问的,通过使用对象关联 alias:Request
分享到:
评论

相关推荐

    harmonyos2-7DTD-A19-DMTMods:7天之死Alpha19的DMT模组合集

    7DTD-A19-DMTMods 7 Days to Die Alpha 19 的 DMT 模组集合 - 全部经过测试,目前正在 A19.3 b6 我使用了最新版本的 DMT(当前为 v2.2.7),可以在这里找到: DMT 现在使用最新的 Harmony dll(当前版本 2.0.2)构建...

    A19T三极管,A19T芯片产品应用手册

    《A19T三极管与PW3401A MOSFET的应用解析》 在电子工程领域,理解和掌握各种半导体器件的特性至关重要,本文将深入探讨A19T三极管及其相关产品——PW3401A增强模式P沟道MOSFET的应用与特性。 A19T三极管,作为一种...

    DELL D630 最新BIOS A19

    DELL D630 最新BIOS A19

    SP0A19源代码

    SP0A19源代码 ** File Name: Sensor_SP0A19.c * ** Author: superpix * ** Date: 03/02/2011 * ** Copyright: Spreadtrum All Rights Reserved. * ** Description: implementation of digital camera register...

    Dell Latitude D630 BIOS A19

    Dell Latitude D630 BIOS A19

    KAO3401 SOT-23 A19T.pdf

    它采用SOT-23封装形式,并且标记为A19T KUU。SOT-23是一种小功率表面贴装型封装,具有紧凑的设计,适合于小型化电子产品。MOSFET是金属-氧化物-半导体场效应晶体管(Metal-Oxide-Semiconductor Field-Effect ...

    mgl7460-a19-projet1:小组成员是:Ahmed,Elham,Ali,Amine

    【标题】"mgl7460-a19-projet1"是一个项目名称,其中包含小组成员Ahmed、Elham、Ali和Amine的工作成果。这个项目可能属于一个课程或团队合作任务,从描述中的“测试1..2..3..4”可以看出,他们正在进行一系列的测试...

    LAMP_A19_MySQL数据库设计

    mysql总结

    622b623bc68d56a19:Basi HTML页面

    在这个“622b623bc68d56a19 Basi HTML页面”的主题中,我们将深入探讨HTML的基本概念、结构以及常用标签。 一、HTML基础 HTML由多个部分组成,包括头部()、主体()以及各种元素(elements)。每个元素由开始标签...

    CMOS图像传感器 SP0A19 驱动程序源代码.rar

    SP0A19是一款特定型号的CMOS图像传感器,其驱动程序则是为了让计算机系统能够正确识别和控制这款传感器所必需的软件部分。 驱动程序源代码是程序员可以阅读和修改的原始编程语言文本,它定义了如何与硬件设备交互,...

    iOS游戏应用源代码——andbet39-GeneCar-d41a19d.zip

    《iOS游戏应用源代码解析——andbet39-GeneCar-d41a19d》 在iOS开发领域,源代码是理解应用运行机制、学习技术实现和进行二次开发的关键。"andbet39-GeneCar-d41a19d.zip"是一个专门针对iOS平台的游戏应用源代码包...

    A19 钣金研磨机.rar

    标题"A19 钣金研磨机.rar"和描述中的信息表明,这是一个与机械加工相关的文件,特别是涉及钣金研磨工艺的设备。在工业制造领域,钣金研磨机是用于处理金属板材表面,改善其平整度、光滑度或进行形状修正的重要工具。...

    IOS应用源码之andbet39-GeneCar-d41a19d.zip

    《iOS应用源码详解——以andbet39-GeneCar-d41a19d为例》 在iOS应用开发的世界中,源码是开发者的心脏,它揭示了应用程序的内部工作机制,提供了学习和理解编程技术的窗口。本篇文章将深入探讨名为"andbet39-...

    Marvell_88NV1120_MPTool_2019.07.25_Toshiba_A19 TLC.rar

    这个2019.07.25版本的软件特别针对Toshiba的A19nm TLC NAND闪存颗粒进行优化。在固态硬盘领域,主控芯片起着至关重要的作用,它负责管理数据的读写、错误校验以及整个存储系统的性能和稳定性。88NV1120是Marvell公司...

    A19 潜伏型AGV运料车.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载

    A19 潜伏型AGV运料车.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载A19 潜伏型AGV运料车.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载A19 潜伏型AGV运料车.zip模型...

    Python库 | csirtgsdk-0.0.0a19.tar.gz

    在这个场景中,我们关注的是一个名为`csirtgsdk`的Python库,其版本为`0.0.0a19`,它被打包成`.tar.gz`格式的压缩文件。 `.tar.gz`是一种常见的文件打包和压缩格式,主要在Unix和Linux系统中使用,但在Windows系统...

    PyPI 官网下载 | thinc-8.0.0a19.tar.gz

    《PyPI官网下载 | thinc-8.0.0a19.tar.gz——Python自然语言处理库解析》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python库供用户下载和使用。在本次讨论的资源中,我们关注的是名...

    PyPI 官网下载 | ory-client-0.0.1a19.tar.gz

    标题中的“PyPI 官网下载 | ory-client-0.0.1a19.tar.gz”表明这是一个从Python Package Index(PyPI)官方源获取的软件包,名为ory-client,版本为0.0.1a19,其格式是tar.gz,这是一种常见的压缩格式,用于在Linux...

    Python库 | polychemprint3-3.0.1a19.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:polychemprint3-3.0.1a19.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Global site tag (gtag.js) - Google Analytics