`
phantomhu
  • 浏览: 19895 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

理解direct service

阅读更多
DirectLink组件和Form表单组件都使用这个service。
direct service生成的URL中包含了应用程序是否是stateful。当这个URL被用户单击的时候,direct service会验证session是否仍然存在,
还是已经过期。direct service的这一特性,使得我们不需要单独对form表单和某些校验session的链接进行验证(但是最近项目中由于使用了多个frame嵌套
造成过期后是在当前使用的frame刷登录页面而不是整个页面,所以比较麻烦还没想到好的方案)
DirectLink组件和Form组件都包含了一个stateful参数,默认为true,我们可以开通对该参数的绑定,制定direct service是否校验session。
如果stateful参数为true,将对session校验,如果session过期Tapestry跳转到StatleSession页面,提示过期。

direct service执行过程
1)IEngine通过分析URL(service=direct)获知调用direct service。然后通过service()方法出发DirectService类的service()方法,而DirectService类的实例在
servlet启动时就已经被初始化并作为全局共享实例存放在Infrastructrue对象中。DirectService对象在被初始化的时候,已经通过hivemind注入了
ResponseRenderer对象、LinkFactory对象和WebRequest对象。
2)direct service接着通过页面名称找到DirectLink组件所在的页面实例,然后激活该页面实例
3)页面对象中包含该页面所调用的所有组件的实例,通过组件ID找到制定的DirectLink组件实例,验证session。
4)LinkFactory对象从请求中解析出URL携带的传递参数。
5)Tapestry通过反射机制出发DirectLink组件的监听方法,然后根据监听方法所返回的页面名称或者页面实例(IPage对象)激活并跳转页面。或者我们在监听方法中自己使用
     IRequestCycle.activate()方法激活页面实例。如果监听方法是无返回值类型你个的void方法, 并且该方法中没有激活任何页面那么将默认跳转到当前页面。
6)由ResponRenderer对象将服务器端响应表现到客户端。

触发组件所绑定的监听方法是direct service最本质的目的,虽然direct service通过页面名称和组件ID找到了触发direct service的组件实例,但是direct service
并不知道也不需要知道这是什么组件(DirectLink或者Form)。

ResponseRenderer  Deprecated. To be replaced with ResponseBuilder
分享到:
评论

相关推荐

    WiFiDirectServiceDiscovery

    - 开发者应熟悉Android的Wi-Fi P2P框架,理解如何集成WiFiDirectServiceDiscovery API。 - 测试时确保在不同设备和网络环境中验证连接的稳定性和性能。 总之,WiFiDirectServiceDiscovery API为开发者提供了强大...

    P2P Direct协议学习

    ### P2P Direct协议核心知识点解析 #### 一、P2P Direct协议概述 P2P Direct协议,也称为WiFi Direct协议,是一种使设备能够直接相互...理解并掌握P2P Direct协议的核心概念和技术细节对于开发者来说是非常有价值的。

    Direct3D9入门教程

    - **Direct3D的程序结构**:理解Direct3D应用程序的一般架构,包括初始化、渲染循环和清理阶段,以及各部分之间的协调。 #### 总结 Direct3D9提供了一整套丰富的API,用于创建高性能的3D图形应用。从简单的图形...

    Android端WifiDirect文件传输Demo

    WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); manager.discoverPeers(channel, new WifiP2...

    android中wifidirect操作代码

    本资源提供的代码示例将帮助你理解和实现Android设备间的Wi-Fi Direct连接。 首先,我们要理解Wi-Fi Direct的基本概念。Wi-Fi Direct,又称为Wi-Fi P2P(Peer-to-Peer),允许设备之间建立点对点连接,就像蓝牙一样...

    使用Wi-Fi搜索-Using Wi-Fi Direct for Service Discovery

    开发者需要熟悉Wi-Fi Direct的API来有效地利用这些功能,并理解它们在没有传统网络基础设施支持的情况下如何工作。因此,对于想要开发在没有固定网络基础设施的情况下也能进行设备间通信的应用的开发者而言,了解和...

    Android Wi-Fi Direct 开发示例代码

    通过理解和实现上述步骤,开发者可以创建出具有Wi-Fi Direct功能的应用,利用`WiFiDirectServiceDiscovery`和`WiFiDirectDemo`作为起点,结合具体需求进行扩展和定制。这些示例代码提供了从查找设备、建立连接到服务...

    android wifi direct代码开启

    在Android平台上,Wi-Fi Direct是一项重要的无线连接技术,它允许设备之间直接建立高速、低延迟的连接,无需...通过理解这个类的功能和API,你可以将其整合到你的项目中,以实现更高效和稳定地管理Wi-Fi Direct功能。

    WiFi 直连 WiFi Direct / WiFi P2P

    WiFi Direct,也称为WiFi P2P,是一种无线通信技术,允许设备之间直接建立连接,而无需通过传统的WiFi接入点或...通过深入理解上述知识点,开发者可以更好地利用WiFi Direct来开发创新的应用和服务,提升用户的体验。

    七步实现directjngine、Ext Direct调用Java服务器端方法 directjngine官方demo精简版

    本教程将通过七个步骤,介绍如何使用DirectJNgine和Ext Direct来调用Java服务器端的方法,帮助你理解和实践这两种技术。 第一步:了解DirectJNgine和Ext Direct DirectJNgine是基于Spring框架的,它提供了对Ext ...

    Direct3D9初级教程

    - **Mesh模型**:理解Mesh模型的概念,并学习如何在Direct3D中绘制Mesh模型。 - **文本显示**:探索如何在Direct3D场景中显示文本。 - **Direct3D中的2D绘图**:了解如何在Direct3D环境中进行2D绘图。 - **Direct3D...

    android wifi direct communication

    **Android WiFi Direct通信详解** ...总之,WiFi Direct为Android设备提供了直接、快速的数据传输途径,简化了设备间的交互,对于开发者来说,理解和掌握WiFi Direct的使用,可以为用户带来更便捷、高效的应用体验。

    DirectPrint server and apk

    5. **Java编程**:由于DirectPrint涉及到Java技术,因此理解基本的Java编程概念是有帮助的。Java是一种跨平台的编程语言,它的“一次编写,到处运行”特性使得开发适用于不同操作系统(如Windows和安卓)的应用变得...

    WiFiDirectTestApp-master源码

    这个源码可以帮助开发者理解如何在Android应用程序中实现WiFi Direct的功能。 源码分析: 1. **WiFiDirectBroadcastReceiver**: 这个类用于监听系统广播,当WiFi Direct的状态发生改变时,如设备发现、连接或断开...

    交换机通信协议_EWSD_RADIUS_CONNECT-DIRECT.rar

    RADIUS(Remote Authentication Dial-In User Service)则是一种网络认证协议,常用于验证用户身份,提供计费和授权服务。"EWSD_RADIUS_CONNECT-DIRECT"可能是指EWSD交换机与RADIUS服务器之间建立直接连接的方式,以...

    serviceserver

    1. **DWRProject2** 和 **DWRProject3**:DWR(Direct Web Remoting)是一个开源Java框架,它允许JavaScript在浏览器和Java服务器之间进行直接的远程方法调用(RPC)。这意味着前端开发者可以像操作本地对象一样操作...

    支付宝快捷支付网关接口(create_direct_pay_by_user)

    - **service**:服务名称,对于`create_direct_pay_by_user`,服务名称固定为`create_direct_pay_by_user`。 ### 商户回传业务参数 `item_orders_info`参数用于包含订单的详细信息,如商品名称、数量、单价等。它是...

    Delphi WEB SERVICE10

    在Delphi中,开发Web服务主要依赖于 Indy (Internet Direct) 库和WSI (Web Services Interoperability) 规范,这些工具使得开发者可以轻松地创建符合标准的SOAP (Simple Object Access Protocol) 和RESTful Web服务...

Global site tag (gtag.js) - Google Analytics