JSP内置隐含对象的作用
JSP 架构背后的理念是提供一个 Web 组件,它允许开发人员着重关注 Web 内容的表示,而不用陷入解析、编程和数据操纵等细节。JSP 应用程序本质上是特殊的 Web 组件,在处理用户请求之前,J2EE Web 容器首先将其转换成 servlet。在每个 JSP 应用程序内部有一套完整的隐式对象。隐式对象使得开发人员可以访问容器提供的服务和资源。这些对象之所以定义为 隐式的,是因为您不必显式地声明它们。不论您是否声明它们――虽然您不能 重复声明它们,它们在每个 JSP 页面当中都进行定义,并且在后台由容器使用。因为隐式对象是自动声明的,所以我们只需要使用与一个给定对象相关的引用变量来调用其方法。
JSP内置隐含对象的作用域极常用方法
内置对象 | 对应的类型 | 作用范围 | 常用的方法 |
request | ServletRequest | Request | getAttribute, getParameter, getParameterNames, getParameterValues, setAttribute |
response | ServletResponse | Page |
|
pageContext | PageContext | Page | findAttribute, getAttribute, getAttributesScope, getAttributeNamesInScope, setAttribute |
session | HttpSession | Session | getAttribute, getId, setAttribute |
application | ServletContext | Application | getAttribute, getMimeType, getRealPath, setAttribute |
out | JspWriter | Page | clear, clearBuffer, flush, getBufferSize, getRemaining |
config | ServletConfig | Page | getInitParameter, getInitParameterNames |
page | Object | Page |
|
exception | Throwable | Page | getMessage, getLocalizedMessage, printStackTrace, toString |
常用的内置对象及其注意事项
其中常用到的有,request,session,application, pageContext等对象,request 作用域非常适合于运行期间在组件间共享数据以处理一个特定的请求。 session 作用域被设计用来为单个用户提供持久的、有状态的体验,它可以跨越多个请求。 application 作用域只有需要在组件之间跨用户会话共享数据时才应该使用。
存在page里的变量没法从一个页面传递到另一个页面。只要页面跳转了,它们就不见了。
存在request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就消失了。存在session里的变量就只有在关闭浏览器时才会消失。application里的变量只有在关闭tomcat时才会消失。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。