首页 > 学院 > 开发设计 > 正文

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

2019-11-14 09:49:18
字体:
来源:转载
供稿:网友

首先说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键值对,分别存放不同的属性范围,嗯。。。

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表