
3.3 JSP内置对象
JSP提供了一些内置对象,这些内置对象主要功能是可以不加声明和创建就可以在JSP页面脚本(Java程序片和Java表达式)中使用成员变量。
3.3.1 JSP内置对象简介
JSP提供了一些由JSP容器实现和管理的内置对象,在JSP应用程序中不需要预先声明和创建这些对象就能直接使用,这样使网站开发人员编程更加快捷、方便。内置对象的构建基础是HTTP,可以使用这些对象完成很多的工作,比如,收集浏览器请求发出的信息、响应浏览器以及存储用户信息等。常见JSP内置对象有7个,分别是Request、Response、Ses-sion、Application、PageContext、Exception和Out对象。
3.3.2 Request对象
Request(请求)对象用于获取客户端用户提交的各种信息。当客户访问服务器页面时,首先会提交一个HTTP请求。Request对象就是对HTTP请求包进行封装。因此,使用Re-quest对象的方法,可以获取客户端和服务器端信息,如客户端主机名和IP地址、传递参数名、参数值、服务器主机名和IP地址等。
Request对象的生命周期是由JSP容器所控制的。具体过程:当客户端通过HTTP请求一个JSP页面时,JSP容器就会创建Request对象并将请求封装到Request对象中,当JSP容器处理完请求,Request对象将会被销毁。
Request对象的常用方法如表3-2所示。
表3-2 Request对象的常用方法

【例3-8】request对象的应用实例。

其运行结果如图3-8所示。

图3-8 Request对象实例结果
3.3.3 Response对象
Response(响应)对象的功能与Request对象的功能相反,Response对象是把服务器端的数据以HTTP的格式发送到客户端浏览器。也就是说Request对象用于得到用户提交的信息,而Response对象是向用户发送信息。Response对象的常用的方法如表3-3所示。
表3-3 Response对象的常用方法

【例3-9】Response对象的应用实例。

其运行结果如图3-9所示。

图3-9 Response对象实例结果
3.3.4 Session对象
Session(会话)对象在JSP页面第一次被装载时自动创建,用于完成会话期的管理工作。从一个客户打开浏览器并连接到服务器开始,直到该客户关闭浏览器离开这个服务器结束,被称为一个会话。当客户访问服务器时,可能会在服务器的几个页面之间反复链接或反复刷新一个页面,通过Session对象,服务器可以知道是否是同一个客户。
当一个客户首次访问服务器上的某个JSP页面时,JSP引擎将产生一个Session对象,同时分配一个String类型的id号,JSP引擎同时将该id号发送到客户端,存放在Cookie中,这样Session对象和客户之间就建立了一个一一对应的关系。当客户再次访问该服务器的其他页面时,不用再分配给客户新的Session对象,直到该客户关闭浏览器之后,服务器端才将该客户的Session对象注销,并且注销和客户会话的对应关系。当客户重新打开浏览器再次连接到该服务器时,服务器将为该客户重新创建一个新的Session对象。Session对象常用的方法如表3-4所示。
表3-4 Session对象常用方法

【例3-10】Session对象应用的实例。


----------ch03_10_1.jsp------------

其运行结果如图3-10所示。

图3-10 在线购书实例结果页面
3.3.5 Application对象
Application(应用)对象是在服务器启动后产生的,当客户在所访问的网站的各个页面之间浏览时,这个Application对象都是同一个,一直保持到服务器关闭。但是与Session对象不同的是,所有客户端用户共享这个内置的Application对象,所以可以利用Application对象保存服务器运行期间的全局数据信息。Application对象的常用方法如表3-5所示。
表3-5 Application对象的常用方法

【例3-11】Application对象应用的实例。

其运行结果如图3-11所示。

图3-11 Application对象应用结果图
3.3.6 PageContext对象
PageContext(页面内容)对象用于存储本JSP页面的相关信息,如属性、内置对象等。PageContext对象常用的方法如表3-6所示。
表3-6 PageContext对象常用方法

【例3-12】PageContext对象应用的实例。

其运行结果如图3-12所示。

图3-12 PageContext对象应用实例结果
3.3.7 Exception对象
Exception(异常)对象主要用于处理对出错的JSP页面内的异常访问。具体处理机制:若一个JSP文件在运行时出现异常,则抛出一个异常。若该页面中定义了异常处理页,则由异常处理页来负责处理异常,若没有定义异常处理页则由服务器来处理异常。Exception对象常用的方法如表3-7所示。
表3-7 Exception对象的常用方法

说明:只有在JSP页面的Page指令中指定isErrorPage=“true”之后,才可以在本页面中使用Exception对象。
【例3-13】Exception对象应用的实例。
-----------------ch03_13.jsp-------------------

------------------ch03_13_1.jsp-------------------

其结果如图3-13所示。

图3-13 Exception对象应用实例结果
3.3.8 Out对象
Out(输出)对象主要用于向客户发送各种数据,同时管理应用服务器上的输出缓冲区(Buffer)。Out对象可以直接向客户端发送一个由程序动态生成的HTML文件。Out对象相关的方法如表3-8所示。
表3-8 Out对象的相关方法

注意:Out对象中有一些常用的属性NO_BUFFER(非缓冲区输出)、DEFAULT_BUFFER(缓冲区输出)、BufferSize(设置缓冲区大小)和AutoFlush(设置是否自动清空缓冲区)。
【例3-14】Out对象应用的实例。

其运行结果如图3-14所示。

图3-14 Out对象应用实例结果
3.3.9 案例——JSP内置对象综合应用
【例3-15】要求设计一个Web项目,里面包含两个页面,实现页面间传值。
具体代码:
---------ch03_15.jsp--------

---------ch03_15_1.jsp----------

运行结果如图3-15所示。

图3-15 运行结果页面