6.3 JSP的内置对象
在JSP中预先定义了一些常用的对象,在脚本语言中不用声明就可以直接使用,这些对象包括request对象、response对象、pageContext对象、session对象、application对象、out对象、config对象和page对象。其实JSP中内置对象的方法都来自于Servlet中提供的各种方法,主要来自于javax.servlet、javax.servlet.http和javax.servlet.jsp。下面分别介绍一下前6个内置对象。
6.3.1 request对象
request对象的类型来自于javax.servlet.http.HttpServletRequest接口。当客户端请求一个JSP网页时,JSP引擎会将客户端的请求信息包装在这个request对象中,请求的信息包括请求的标头信息、请求方式、参数值和客户端主机名称等。request对象的方法如表6.1所示。
表6.1 request对象的方法
在本书中主要使用以下3个方法:
● getParameter(String name),取得参数名称为name的参数值,传回值类型是String。
● getParameterNames(String name),取得所有的参数名称,传回值类型是java.util.Enumeration。
● getParameterValues(String name),如果名称为name的参数包含一个以上的参数值,就可以利用该函数来取得所有的内容,传回值类型是字符串数组String[]。
6.3.2 response对象
response对象的类型来自于javax.servlet.http.HttpServletResponse接口。response对象主要将JSP处理数据后的结果传回到客户端。JSP引擎会根据客户端的请求建立一个预设的response回应对象,然后传入service方法,用来给客户端浏览器提供参考的信息,如回应标头、内容和服务器状态码等。response对象的方法如表6.2所示。
表6.2 response对象的方法
6.3.3 pageContext对象
pageContext对象提供存取所有关于JSP程序执行时期间所需要用到属性的方法,如session、application、config和out对象属性。JSP引擎利用JSPFactory.getDefaultFactory()取得预设的JSPFactory对象,然后用这个JSPFactory对象的getPageContext()方法取得pageContext对象,可以在JSP所产生的Servlet Class中看到这样的声明:
JSPFactory _JSPxFactory=null; PageContext pageContext=null; _JSPxFactory=JSPFactory.getDefaultFactory(); pageContext=JSPxFactory.getPageContext(this, request, response, "",true,8192,true);
当使用getPageContext()取得pageContext对象时,会先用指定的参数内容来调用这个initialize()方法,然后才返回pageContext对象。pageContext对象的方法如表6.3所示。
表6.3 pageContext对象的方法
6.3.4 session对象
session对象的类型来自于javax.servlet.http.HttpSession接口,取得的方式是调用pageContext.getSession()方法,当客户端请求超过一个以上的JSP程序网页时,session对象提供保存请求时期所有对象属性的方法,所保存的对象在请求的过程中都是有效的。session对象提供了3个方法来存取和移除保存对象,分别是setAttribute、getAttribute和removeAttribute。
setAttribute(java.lang.String name, java.lang.Object value),其中name是对象的名称,value可以是任意类型的对象。如果要保存的是纯量值(primitive),如int、char、float等,则必须分别用new Integer(intValue)、new Charater(character)和new Float(floatValue)先转换成对象然后再传入;如果对象名称name已经存在于session中,那么原来的值会被新的对象取代,因为session内的对象名称必须是唯一的。getAttribute(java.lang.String name)方法用来取得名为name的对象,它的回传值是java.lang.Object,所以将它取出时,对它进行强制转换类型。removeAttribute()方法用来移除session中名为name的对象。session对象的方法如表6.4所示。
表6.4 session对象的方法
6.3.5 application对象
application对象与session对象的作用类似,最大的不同之处在于作用域,Web服务器会为每个用户创建一个session,但所有用户会共享一个application,一旦创建了applicatin对象,这个对象将一直存在,直到服务器关闭。application对象经常被使用在存取环境的信息中,因为环境的信息通常都存储在ServletContext中,所以常利用application对象来存取ServletContext中的信息。
application对象的类型来自于javax.servlet.ServletContext接口类,它取得的方式是调用pageContext.getServletContext()方法。application对象的方法如表6.5所示。
表6.5 application对象的方法
6.3.6 out对象
out对象的类型是一个继承自抽象类javax.servlet.JSP.JSPWriter的类,它取得的方式是调用pageContext.getOut()方法。out对象能把结果输出到网页上。out主要用来控制管理输出的缓冲区(buffer)和输出流(output stream)。out对象的方法如表6.6所示。
表6.6 out对象的方法