内置对象的本质 是 jsp
页面操作 的所有对象集合
而 通过内置对象的方法 指定 四大属性对象 来与 其他 jsp
页面交互 ,与 servlet
交互
其交互的内容进行分类后 就是对应的 不同属性
而这些对象都有 自身的 作用范围 ,在范围外 ,将 发生改变,或 不再适用
属性范围
与上一节 提到的 相同
JSP
中提供了四种属性范围,四种属性范围分别指以下四种:
属性 | 生命周期 | 简介 |
---|---|---|
page(本质为 pageContext 属性) | 在当前页面中有效 | 一个属性只能在一个页面中取得,跳转到其他页面无法取得 |
request | 请求转发 | 一个页面中设置的属性,只要经过了服务器跳转,则 跳转之后的页面 可以继续取得。 |
session | 默认半小时 ,而且只针对一个浏览器(或服务器上的唯一的session) | 一个浏览器设置的内容,只要是与此浏览器相关的页面都可以访问 |
application | 服务器关闭的时候 | 在整个服务器上设置的属性,任何都可以访问 |
注:
虽习惯将页面范围的属性称为page范围
,但是实际上操作的时候是使用pageContext
内置对象完成的。
属性的操作方法
与上一章的相同,除去 查找操作 ,总共三个操作 ,
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
属性的操作本质上 只有 添加、获得和删除
这个几个操作。
附:
Object value
值value
为Object
类型,由于值为Object
类型,这表示可以设置任意类型的数据作为值,因为所有的类都是从Object
类型继承而来。因此设置属性值的时候可以是任意类型的数据。
简介
pageContext
属性范围(不考虑特殊性)
pageContext
对象在本页面setAttribute
属性后,在本页面可以通过getAttribute
方法取得
属性值
如果转发到另一个页面后,将不能取得属性值
request
属性范围
request
对象在本页面setAttribute
属性后,在本页面通过getAttribute
方法可取得属性值
转发(例如<jsp-forward/>
)至另一个页面也可以取得属性值
但是当向另一个页面发送超链接时,不能通过getAttribute
方法取得属性值
sessoin
属性范围
session
对象在本页面setAttribute
属性后,通过getAttribute
方法在本页面可取得属性
转发之后,发送 超链接 之后都可以得属性。
但当重新打开浏览器之后,再通过getAttribute
方法,将不能取得属性值
application
属性范围
applicate
对象在本页面setAttribute
属性后,通过getAttribute
方法在本页面
转发之后,超链接,打开另外一浏览器之后都可以取得属性。
四种属性范围的使用场合
1.page
(pageContext
):除自定义标签外,用的很少
2.request
:如果客户向服务器发请求,产生的数据
用户看完就没用了,像这样的数据就存在
request
域
像 新闻数据 ,属于用户看完就没用的。
3.session
:如果客户向服务器发请求,产生的数据
用户用完了等一会儿还有用,像这样的数据就存在
session
域中,
像购物浏览的商品数据,用户需要看到自己浏览过哪些商品信息,并且等一会儿,还要用这个商品数据结帐。
4.application
(servletContext
):如果客户向服务器发请求,产生的数据
用户用完了,还要给其它用户用,像这样的数据就存在
application
(servletContext
)域中
像聊天数据,购物车等。
使用的原则:
因为四种属性范围的保存时间不同,所以占用内存的时间也就不同了,能使用request
就不要使用session
,一般情况下,request
和session
两个属性范围使用的频率是最高的。