JSP 对比4个内置对象的作用域
首先, JSP中⼀共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception。
但这里只对比4个存储数据的对象(作用域从小到大排序):
-
pageContext 对象
pageContext 对象的作⽤是取得任何范围的参数,通过它可以获取 JSP⻚⾯的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP⻚⾯中可以直接使⽤ pageContext对象。pageContext 对象的作⽤域为当前JSP页面。
-
request 对象
request 对象是 javax.servlet.httpServletRequest 类型的对象。 该对象代表了客户端的请求信息,主要⽤于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求⽅式以及请求参数等)。request 对象的作⽤域为⼀次请求。
-
session 对象
session 对象是由服务器⾃动创建的与⽤户请求相关的对象。服务器为每个⽤户都⽣成⼀个session对象,⽤于保存该⽤户的信息,跟踪⽤户的操作状态。session对象内部使⽤Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以是复杂的对象类型,⽽不仅仅局限于字符串类型。session 对象的作⽤域为⼀次会话(除非更换浏览器) 。
-
application 对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息
会在整个应⽤中都有效。与session对象相⽐,application对象⽣命周期更⻓,类似于系统的全局变量 ServletContext
区别:
pageContext:当前JSP页面
request:单次请求
session:浏览器访问期间(会话期间)
application:服务器启动期间,所存的数据可以跨浏览器