关于4种属性范围 和5个对象的思考

本文详细解析了JSP中的page、request、session及application四种作用域的概念及其应用场景,并阐述了它们如何帮助开发者在不同场景下管理和传递数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说5个对象
pageContext对象那个– jsp上下文
request对象
response对象
session对象
application对象

首先确定一点,这些对象应该都是在tomcat服务器里面保存的!

java里面一切都是对象,服务器开始运行的时候,就会产生application对象,至于这个对象是什么样子的,有什么属性,我们先不管,反正这个对象那个就是保存了服务器的一些信息,对所有用户都是一样的
好了,接下来,由用户a开始上网,访问了服务器,a用户就有了一个session对象,这个对象是什么我也不管,反正就是描述用户信息的,如果用户b也开始上网,那么b也有一个session对象

用户访问某个资源,在url里面输入地址,就会产生一个request对象,同时tomcat就会产生一个response对象,用于给用户反馈

有时候就是要这么样理顺一下思路
上面的东西理解了,再来说4种属性范围
page
request
session
application
是不是特别容易混淆?没错,jsp的基础感觉就是这么操蛋,如果不理清楚思路的话,属性范围和对象真是一头雾水。。。

我们首先要搞清楚这个属性是个什么东西,他有什么用?
设置属性是通过对象的方法来设置的
pageContext.setAttribute
request.setAttriubte
session.setAttribute
application.setAttribute
所以这些个属性肯定是4种对象里面的私有成员变量,通过方法操作的他们,然后这个属性又是以键值对的形式存在的,所以很明显,在request,session,application,page,肯定存在用于存放属性的Map键值对成员变量

就像这样

private Map<String,String> attribute;

public setAttribute(String name,Object value){
..
}
public getAttribute(String name){
..
}

我没有看源码,肯定和这个差不多。。
好了搞清楚属性是什么东西了,那么属性有什么作用呢?
因为属性都是保存在对象里面的,所以属性的作用就是—》
我们可以往page对象,request对象,session对象,application对象里面写东西啊!!!保存在不同对象里面的属性就是不同的属性范围
具体的作用呢,page对象里面的属性可以用来记录page文档的信息
request对象里面的属性可以在服务器端跳转的时候共享参数
session对象里面的属性可以判断用户信息
application对象里面的属性可以取得虚拟目录的物理路径,虚拟目录就是那个”/”

之前我还非常疑惑,既然有属性范围这么一说,那么四个对象分别是属于什么属性范围呢?现在思路理清楚了,这个问题也就好回答了

属性范围是针对键值对存放在哪个对象里面来区分的,不应该说对象是属于哪个属性范围,应该这么说,

一个pageContext对象就是一个page属性范围
一个request对象就是一个request属性范围,
一个application对象就是一个applicaiton属性范围,
一个session对象就是一个session属性范围

好像还多了一个response对象,好了,其实我们不需要给每个对象都设置属性范围,所以response对象就没有对应的了

后来看到了pageContext这个setAttribute(String name,Object value,int scope)方法有些疑惑,这个方法可以通过制定scope设置4种属性范围的属性,我又奇怪了,这个属性范围到底是存放在pageContext对象里面的呢,还是分别存放在不同对象里面的呢?但前面我的理解有一点肯定没错,就是属性肯定是存放在对象里面的。

由于看不到源码,只看得到接口,我就索性猜测一下吧,在pageContext里面设置属性应该是调用其他对象的设置属性的方法,

也可以其他对象通过调用pageContext的方法,那么所有对象都是存放在pageContext里面的咯。。既然这样,pageContext里面就应该是定义了四个Map键值对,分别存放不同的属性范围,嗯。。。

好吧,这个问题到此为止,具体是怎么样的也不重要,只要记住一点
属性是键值对,是存放在对象里面的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值