搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
羊村懒王
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
ollama + autogen排雷_autogen use ollama config
2
动态规划_动态规划csdn
3
mac-datagrip下载破解安装教程_datagrip mac
4
基于C++的K-近邻分类算法实现_k的近邻算法c++
5
2024成都现代职业教育及装备展6月1日举办 免费参观
6
修改gitlab菜单结构_gitlab 修改导航栏布局
7
Systemui的介绍以及与普通应用的差异_修改systemui uid
8
180. 如何避免 SAP UI5 应用被 iframe 嵌入到其他前端页面中去
9
五大通信库:Modbus (***)_easymodbus
10
毕设开源 基于hadoop大数据教育可视化系统(源码+论文)
当前位置:
article
> 正文
web对象page、request、session、application的生命周期_request,session,cookie,application生命周期区别
作者:羊村懒王 | 2024-05-18 20:52:28
赞
踩
request,session,cookie,application生命周期区别
一、 影响范围与生命周期划分
WEB是基于HTTP协议的,HTTP协议是无状态的。无状态是指无法直接通过HTTP连接的相关属性来鉴别用户状态。但实际上的WEB应用通常是需要以用户会话的形式来支撑业务运行的,比如:购物车,BBS,在线交易等。因此常见的WEB服务端技术(如ASP,JSP),把WEB对象影响范围划分为4个生命周期
page
、
request
、
session
、
application
,并且通过一些扩展来实现对会话的支持。
page
是指生命周期在当前页面范围内。
request
是指生命周期在一次请求范围内,如GET和POST。
session
是指生命周期在一个会话范围内。
application
是指生命周期在整个WEB应用程序从启动到关闭的范围内。
二、 实现原理及技术
1.
page
范围,通常是在页面中定义的变量,这个变量的生命周期在页面运行完成后就会结束。
2.
request
范围,通常是请求过程中附带的参数,在这个请求被响应后这些参数的生命周期结束。request参数有表单值或URL中的查询串等,这两种值使用request.getParameter()可以得到。request范围的变量还包括在请求处理过程中设置的属性,就是request.setAtrribute()设定的值,通过request.getAtrribute()来得到。请求是可以进行一次或多次传递的,它分为两种,请求转发和跳转。请求转发是使用request.getRequestDispatcher(“path”).forward(request,response)的形式和Include的形式(path必须在同一个webApp内),此时这个请求中所有的Paramter和Atrribute都会向下传递。跳转方式是response.sendRedirect(“url”)的形式(url无限制),跳转方式实际是向客户端发送了一个301响应,在HTTP头中包含了新的URL,由客户端重新向新的URL进行GET请求。
3.
session
范围。session就是会话,因为HTTP的无状态特性所以想实现会话的功能,必须在每一个请求和响应上附加一个ID来标识一次会话。服务端一般通过两种技术来标识会话。第一种是使用cookie技术,cookie是一种客户端技术,它是用户浏览器提供的功能,通常是以一个受访问域和大小限制的文本文件在客户端进行储存的,在每次请求时都附带在HTTP头中。在JSP中是JSESSIONID=XXXX的形式,通过TcpMoniter可以看到。但是cookie受限于浏览器,如果浏览器没有cookie功能或者用户关闭了cookie功能的话这时候就无法标识会话(在早期的BBS登陆时通常会看到使用本论坛必须开启cookie支持)。另一种技术是使用URL重写,就是说在每一个URL的后面附加一个参数JSESSIONID=XXXX进行标识。在JSP中提供了response.encodeRedirectURL()方法来自动在URL中添加这个参数。WEB服务器根据这个ID在内容中存储与这个会话相关的数据。由于不能及时检测到用户的退出行为同时为了控制内存使用,WEB服务器一般采用超时时间的方式来清理session,默认是30分种,对最后访问时间大于超时时间的session进行清除。这两种技术各有优劣,URL重写的方式解决了cookie技术受限于浏览器的缺陷(目前浏览器默认支持cookie),但采用cookie技术可以在用户关闭浏览器后再次打开浏览器进行访问时保持会话, URL重写的方式则不行。因此有些比较重要的网站如电子商务等会同时采用两种技术。
4.
application
范围。就是在内存中开辟一块全局共享的区域同一个webApp中的程序都可以进行读写,一般用于全局变量和常量等。
三、 使用方法
JSP中一共内置了9个隐含对象page(JSP本身,或者讲是编译后的Servlet)、config(存放着一些Servlet 初始的参数)、request(包含HTTP头和请求相关的参数值等)、response(将JSP 处理数据后的结果传回到客户端,可以设定HTTP头,响应状态码,URL重写等)、out(把结果输出到网页上)、session(表示目前用户的会话状况)、application(用在存取环境的信息)、pageContext(存取其他隐含对象,及对象属性)、exception(若要使用exception 对象时,必须在page 指令中设定。<%@ page isErrorPage=”true” %>才能使用)。包含了前面的4个表示范围的对象。
在Servlet中提供了doPOST和doGET方法,request和response是方法的参数。可以通过request.getSession()取得session对象,通过super.getServletContext()取得application对象。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/羊村懒王/article/detail/589826
推荐阅读
article
vscode
刷
leetcode
使用
Cookie
登录_
leetcode
cookie
...
VScode刷Leetcode使用
Cookie
登录_
leetcode
cookie
leetcode
cookie
...
赞
踩
article
Android
The
application
could not be installed_ins...
Android
Studio 无法运行程序,The
application
could not be installed...
赞
踩
article
Android
Studio
: Application Installation Failed_an...
问题我在复制原项目到另一个文件中后,打开复制的项目,运行到模拟器时,出现了下面的问题 解决方案点击 Build-&...
赞
踩
article
Apache
Shiro
(
Shiro
-550)(cve_2016_4437)远程代码执行 - 漏洞...
Apache
Shiro
框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cooki...
赞
踩
article
深入了解
Flask
Request
...
通过本文的介绍,您了解了
Flask
中request对象的基本用法,包括获取请求数据、请求信息以及文件上传。reque...
赞
踩
article
Vue3基础(
API
风格、监听、
生命周期
、
toRefs
、组件通信、插槽、
axios
,
Promise
)...
watchEffect函数不用指定监听谁,只要watchEffect内部用了某个变量,某个变量发送变化,就会触发。toR...
赞
踩
article
【
GitHub
】如何在
github
上
提交
PR
(
Pull
Request
) + 多个
pr
同时
提交
、互不...
GitHub
是全球最大的代码托管平台之一,允许开发者共享代码、协作开发,并进行版本控制。在这个平台上,
Pull
Req...
赞
踩
article
GitHub
从单机到
联机
:玩转
Pull
Request
...
最近在参与一个叫 Exercism 的项目,这是一个由
GitHub
生态工程师 Katrina Owen 发起的编程练...
赞
踩
article
【
GitHub
】如何
提交
PR
(
Pull
Request
)_
github
上
pr
的网址可以用来拉取吗...
GitHub
:如何
提交
PR
_
github
上
pr
的网址可以用来拉取吗
github
上
pr
的网址可以用来拉取吗 ...
赞
踩
article
Pull
Requests
gitee
是干啥的_
gitee
pull
request
...
Pull
Request是分布式版本控制系统中的一个重要概念,它允许开发者将自己的代码变更提交到另一个仓库。这通常发生在...
赞
踩
article
《
Hibernate
学习笔记五》
Session
的
update
方法详解_
hindawi
sso
中的...
记录一下,博客地址为:https://blog.csdn.net/u010412719/article/details/...
赞
踩
article
合约错误:
org
.
web3j
.
protocol
.exceptions.TransactionExce...
在执行一个 ERC20 智能合约的transfer调用时发生的
org
.
web3j
的一个交易错误:
org
.
web3j
.p...
赞
踩
article
创建
个人主页
(独立
域名
+
github
-
page
)
_
github
page
s
域名
多少钱...
出于找工作时更加全面的介绍自己的目的,
创建
了一个
个人主页
,放上了更多的项目。
域名
在淘宝上50块钱一年买的,网站直接用gi...
赞
踩
article
idea
通过
docker
快速部署项目02:
Docker
开启远程访问(
CentOS
系统)_{
"
mess...
首先编辑
docker
的宿主机文件/lib/systemd/system/
docker
.service修改以ExecSta...
赞
踩
article
o
r
g.sp
r
ingf
r
amewo
r
k.
boot
.Sp
r
ing
Application
.
r
epo
r
tF...
这种错误可能是yml文件里面的格式写的不太对。就像图里的错误。多了几个空格,就导致了错误。出现这种错误,要么好好检查格式...
赞
踩
article
前端
发送
请求之参数处理---【
text
/
plain
】与【
application
/
json
】_plai...
Content-Type就是指 HTTP
发送
信息至服务器时的内容编码类型,服务器根据编码类型使用特定的解析方式,获取数...
赞
踩
article
axios
发送
AJAX
请求
_
axios
$
request
->
ajax
()...
axios
发送
AJAX
请求
_
axios
$
request
->
ajax
()
axios
$
request
->
ajax
() ...
赞
踩
article
解决
Multipart
请求失败:Could not
parse
multipart
servlet
...
在今天的技术博客中,我们将深入探讨一个常见但棘手的服务器错误 —— "
Multipart
Exception: Proce...
赞
踩
article
Spring
基础:快速入门
spring
boot
(3):创建
Restful
的Web服务_
spring
...
本篇文章将在上篇的基础之上,改善HelloWorld的例子, 使用参数绑定取得信息创建一个简单的
Restful
的web ...
赞
踩
article
【
Java
进阶篇】
Java
Request
获取
请求
参数
的
通用方式详解_
java
获取
请求
参数
...
获取
HTTP
请求
的
参数
是
Java
Web开发中
的
基本任务。使用对象,开发人员可以轻松地
获取
请求
参数
的
值,无论是来自URL...
赞
踩
相关标签
vscode
ide
编辑器
leetcode
android
Android Studio
apache
flask
python
后端
vue.js
javascript
前端
github
Pull Request
PR
笔记
git
json
gitee
Java
Hibernate
区块链
java
ViewUI