首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
foreach
hook
buffer
usb
object
bytecode
case
request
emoji
java
chat
数组
const
js
random
web
tags
import
regex
hashtable
hashset
solr
int
command
nodejs
plugins
heatmap
jar
ip
scala
expression
actionscrip
stream
spring
vbscript
replace
char
filter
sum
controller
future
substring
loops
byte
version
node.js
list
keyword
python
go
format
eval
process
email
merge
io
callback
main
javascript
dll
function
split
flutter
dockerfile
testing
config
cPlusPlus
bit
httprequest
timestamp
uml
php7
bitmap
golang
triggers
netty
bash
php
php5
当前位置:
开发笔记
>
编程语言
> 正文
理解directservice
作者:_Cokoice | 来源:互联网 | 2023-09-18 16:56
DirectLink组件和Form表单组件都使用这个service。directservice生成的URL中包含了应用程序是否是stateful。当这个URL被用户单击的时候
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
service
session
struct
hive
注入
web
request
ip
服务器
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
ip
Nginx使用AWStats日志分析的步骤及注意事项
本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ...
[详细]
蜡笔小新 2023-12-14 19:42:01
ip
AJAX的POST请求及实现数据修改功能的方法
本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ...
[详细]
蜡笔小新 2023-12-14 16:12:01
ip
Java实战之电影在线观看系统的实现
本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ...
[详细]
蜡笔小新 2023-12-14 15:52:03
ip
如何使用Java获取服务器硬件信息和磁盘负载率
本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ...
[详细]
蜡笔小新 2023-12-14 13:56:20
ip
Python瓦片图下载、合并、绘图、标记的代码示例
本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ...
[详细]
蜡笔小新 2023-12-13 12:14:55
ip
Linux如何安装Mongodb的详细步骤和注意事项
本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ...
[详细]
蜡笔小新 2023-12-12 21:54:15
ip
Linux下Kafka单机安装配置方法(实操成功)
本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ...
[详细]
蜡笔小新 2023-12-12 18:14:32
ip
如何搭建Java开发环境并开发WinCE项目
本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ...
[详细]
蜡笔小新 2023-12-12 17:37:32
int
通过Go SDK(Amazon S3)从Bucket生成Torrent - Generate Torrent from Bucket via Go SDK (Amazon S3)
Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ...
[详细]
蜡笔小新 2023-12-12 14:13:01
ip
vue cli 3.x移除console采坑记
本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ...
[详细]
蜡笔小新 2023-12-11 21:16:05
ip
基于Socket的多个客户端之间的聊天功能实现方法
本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ...
[详细]
蜡笔小新 2023-12-11 15:55:40
ip
cisco路由器IOS恢复方法之ROMMON恢复的步骤详解
本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ...
[详细]
蜡笔小新 2023-12-11 14:14:49
ip
GreenDAO快速入门
前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ...
[详细]
蜡笔小新 2023-12-11 12:31:00
ip
深入解析Linux下的I/O多路转接epoll技术
本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ...
[详细]
蜡笔小新 2023-12-10 14:18:30
ip
LVS 实现负载均衡的原理
LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ...
[详细]
蜡笔小新 2023-12-10 12:10:22
_Cokoice
这个家伙很懒,什么也没留下!
Tags | 热门标签
foreach
hook
buffer
usb
object
bytecode
case
request
emoji
java
chat
数组
const
js
random
web
tags
import
regex
hashtable
hashset
solr
int
command
nodejs
plugins
heatmap
jar
ip
scala
RankList | 热门文章
1
SpringBoot的配置项
2
关于Padding实现的一些细节
3
视频画质如何提高?视频画质主要由哪些因素决定?
4
php中intval是什么数组,如何区分PHP中intval()与(int)
5
Linux 信息交流命令
6
Changefree CodeForces767E
7
自适应跳转
8
一个全面获取Intel CPUID的代码
9
AJAX 三级联动例题
10
1.5编程基础之循环控制 02 财务管理
11
backup2
12
Java培训教程分享:变量与常量
13
散分啦!刚收到塔塔信息(TCS)杭州全球研发中心的录取电话...
14
java课堂回答
15
React Hooks 异步操作踩坑记
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有