📅  最后修改于: 2020-10-27 03:00:40             🧑  作者: Mango
Tapestry尝试尽可能多地使用Java的可用功能。例如,所有Tapestry页面都只是POJO。它不强制执行任何自定义接口或基类来编写应用程序。相反,它使用注释(一种轻量级的选项来扩展Java类的功能)来提供功能。它基于经过测试的Java Servlet API,并作为Servlet过滤器实现。它为Web应用程序提供了新的维度,并且编程非常简单,灵活,易于理解和强大。
让我们讨论在请求挂毯页面时发生的操作顺序。
步骤1 – Java Servlet接收页面请求。该Java Servlet的配置方式是将传入请求转发到Tapestry。如以下程序中所指定,在web.xml中完成配置。 Filter和Filter Mapping标记将所有请求重定向到Tapestry Filter 。
My Tapestry Application
tapestry.app-package
org.example.myapp
app
org.apache.tapestry5.TapestryFilter
app
/*
步骤2 – Tapestry筛选器通过其Service()方法调用HttpServletRequestHandler服务。
步骤3 – HttpServletRequestHandler将请求和响应存储在RequestGlobals中。它还将请求和响应包装为请求和响应对象,并将其发送到RequestHandler。
步骤4 – RequestHandler是Servlet API的HttpServletRequest之上的抽象。挂毯的一些重要功能是在RequestHandler部分完成的。挂毯的功能可以通过在RequestHandler中编写过滤器来扩展。 RequestHandler提供了几个内置过滤器,其中包括-
CheckForUpdates筛选器-负责实时类的重新加载。此过滤器检查java类的更改,并根据需要更新应用程序。
本地化过滤器-标识用户的位置并为应用程序提供本地化支持。
StaticFiles筛选器-确定静态请求并中止该过程。一旦流程中止,Java Servlet将控制并处理请求。
错误过滤器-捕获未捕获的异常并显示异常报告页面。
RequestHandler还将修改请求和响应并将其存储在RequestQlobals中,并调用MasterDispatcher服务。
步骤5 – MasterDispatcher负责通过调用多个调度程序来渲染页面。 MasterDispatcher调用的四个主要调度程序如下-
RootPath Dispatcher-识别请求的根路径“ /”,并将其呈现为“开始”页面。
Asset Dispatcher-通过检查url模式/ assets /识别了资产(Java资产)请求,并将请求的资产作为字节流发送。
PageRender Dispatcher-大部分挂毯操作在PageRender Dispatcher和下一个分派器Component Dispatcher中完成。该调度程序识别该请求的特定页面及其激活上下文(其他信息)。然后,它将呈现该特定页面并将其发送给客户端。例如,如果请求url为/ product / 12123434,则调度程序将检查名称为product / 12123434的任何类是否可用。如果找到,它将调用product / 12123434类,生成响应并将其发送给客户端。如果不是,则检查产品类别。如果找到,它将调用带有附加信息的产品类121234434,生成响应并将其发送给客户端。此额外信息称为激活上下文。如果未找到任何类,则仅将请求转发到组件分派器。
组件分派器-组件分派器将页面的URL与以下模式匹配-/