热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

理解directservice

DirectLink组件和Form表单组件都使用这个service。directservice生成的URL中包含了应用程序是否是stateful。当这个URL被用户单击的时候&#x
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 
推荐阅读
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文以 www.域名.com 为例,详细介绍如何为每个注册用户提供独立的二级域名,如 abc.域名.com。实现这一功能的核心步骤包括:首先,确保域名支持泛解析,即将 A 记录设置为 *.域名.com,以便将所有二级域名请求指向同一服务器。接着,在服务器端使用 ASP.NET 2.0 进行配置,通过解析 HTTP 请求中的主机头信息,动态识别并处理不同的二级域名,从而实现个性化内容展示。此外,还需在数据库中维护用户与二级域名的对应关系,确保每个用户的二级域名都能正确映射到其专属内容。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
author-avatar
_Cokoice
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有