首先说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键值对,分别存放不同的属性范围,嗯。。。
好吧,这个问题到此为止,具体是怎么样的也不重要,只要记住一点 属性是键值对,是存放在对象里面的
新闻热点
疑难解答