在JSP页面脚本(Java程序片和Java表达式)中有一组常见的、不需要在使用之前创建和事先声明的成员变量,就是内置对象。
JSP有九大内置对象,分别作用于四个域。
通过内置对象的作用范围也就是四个域来分别介绍九大内置对象。
他们按照作用范围的大小大致可分为:page域<request域<session域<application域。
1 page域
page域中的变量的作用范围只在当前页面。例如在当前页面中将对于page域中的变量的引用请求发送给客户端,在响应返回给客户端时,page域中的对象将被释放;或当页面发生跳转时,当前页面的page域中的对象也会被释放。换句话说,page域中的对象只作用在当前的页面中,离开此页面page域中的对象也就跟着消失了。
作用在page域的内置对象
①page对象:代表JSP页面本身,是this引用的一个代名词。
②config对象:ServletConfig类的一个对象,存放着一些servlet初始化信息。
常用方法 | 说明 |
---|---|
getInitParameter(name) | 取得指定名字的Servlet初始化参数值 |
getInitParameterNames() | 取得Servlet初始化参数列表,返回一个枚举实例 |
getServletContext() | 取得Servlet上下文 |
getServletName() | 取得生成的Servlet的名字 |
③out对象:JSP页面的主要目的是动态产生客户端需要的HTML结果,如可以通过out.print()来输出结果。out对象还提供了一些其他的方法来控制管理输出缓冲区(out.getBufferSize())和输出流(out.getRemaining())。
④response对象:用于将服务器端数据发送到客户端,通过在客户端浏览器显示、用户浏览页面的重定向以及客户端创建Cookies等实现。
主要方法 | 说明 |
---|---|
addHearder(String name,String value) | 添加HTTP头文件,该头文件将会传到客户端(若存在同名头文件,则直接覆盖) |
setHeader(String name,String value) | 设定指定名字的HTTP文件头的值 (若该值存在,将被新值覆盖) |
containsHeader(String name) | 判断指定名字的HTTP文件头是否存在,并返回布尔值 |
flushBuffer() | 强制将当前缓冲区的内容发送到客户端 |
addCookie(Cookie cookie) | 将添加一个Cookie对象,用来保存客户端的用户信息 |
sendError(int sc) | 向客户端发送错误信息 |
setRedirect(url) | 把响应发送到另一个指定的页面(URL)进行处理 |
*[布尔值]:“真” True 或"假" False 中的一个。
⑤pageContext对象:pageContext类的一个实例,提供对几种页面属性的访问,并且允许向其他应用组件转发request对象,或者其他应用组件包含request对象。
主要方法 | 说明 |
---|---|
getAttribute() | 返回与指定范围内名称有关的变量或null |
forward(String relativeurl Path) | 把页面重定向到另一个页面或Servlet组件上 |
findAttribute() | 按照页面请求、会话及应用程序范围的顺序实现对某个已经命名属性的搜索 |
getException() | 返回当前的exception对象 |
setAttribute() | 设置默认页面的范围或指定范围中的已命名对象 |
removeAttribute() | 删除默认页面范围或指定范围中已命名的对象 |
⑥exception对象:用来处理JSP文件在执行是所发生的错误和异常。可以配合page指令一起使用,通过指定某一页面为错误处理页面,把所有的错误都集中到那个页面去处理(必须在isErrorPage=true的情况下才可以使用expection对象)。
主要方法 | 说明 |
---|---|
getMessage() | 返回错误信息 |
printStackTrace() | 以标准错误的形式输出一个错误和错误堆栈 |
toString() | 以字符串的形式返回一个对异常的描述 |
2 request域
request域代表变量只能在一次请求中生效,request域中的变量可以存在于forward请求跳转的前后两个页面中,但是进行页面刷新后就不存在了。但是一次请求不代表只跳转了一个页面,也可跳转多个页面。request域中的变量作用在从http请求发起,到服务器处理结束,这发出请求、返回响应的整个过程中。当这个请求周期结束运行,request域中的变量就失效了。
作用在request域的内置对象
request对象:对在用户请求中给出的信息进行访问,包含了所有有关当前浏览器请求的信息。
主要方法 | 说明 |
---|---|
getParameter(String name) | 以字符串的形式返回客户端的某一个请求参数的值,该参数由name指定 |
getParameterValue(String name) | 以字符串数组的形式返回指定参数所有值 |
getParameterNames() | 返回客户端传送给服务器端的所有的参数名,结果集是一个Enumeration(枚举)类的实例 |
getAttribute(String name) | 返回name指定的属性值 |
setAttribute(String name,java.lang.Object obj) | 设置名字为name的request参数的值为obj |
getCookies() | 返回客户端的Cookie对象,结果是一个Cookie数组 |
getHeader(String name) | 获得HTTP协议定义的传送文件头信息 |
getDateHeader() | 返回一个Long类型的数据,表示客户端发送到服务器的头信息中的时间信息 |
getHeaderName() | 返回所有request Header的名字,结果集是一个Enumeration(枚举)类的实例 |
getServletPort() | 获得服务器的端口号 |
getServletName() | 获得服务器的名称 |
getRemoteAddr() | 获得客户端IP地址 |
getRemoteHost() | 获得客户端的主机名 |
getProtocol() | 获得客户端向服务器端传送数据所依据的协议名称 |
getMethod() | 获得客户端向服务器端传送数据的方法 |
getServletPath() | 获得客户端所请求的脚本文件的文件路径 |
getCharacterEncoding() | 获得请求中的字符编码方式 |
getSession(Boolean create) | 返回和当前客户端请求相关联的HttpSession对象 |
getQuertString() | 返回查询字符串,该字符串由客户端以get方法向服务器端传送 |
getRequestURI() | 获得发出请求字符串的客户端地址 |
getContentType() | 获取客户端请求的MIME类型 |
3 session域
session域中的变量只能在一次会话周期中生效,就是指从用户打开浏览器开始,到用户关闭浏览器的整个过程。这个过程可能包含多个请求响应,只要用户不关浏览器,那么就始终在一个会话中,session域中的变量就会一直生效,但是只在当前的会话中生效。
作用在session域的内置对象
session对象:一种服务器单独处理和记录用户端使用者信息的技术。当用户与服务器联机是,服务器会给每个用户一个唯一的session,服务器端通过这些session的信息来判断用户的信息,以提供独特的服务。
主要方法 | 说明 |
---|---|
getAttribute(String name) | 获得指定名字的属性。 |
getAttributeNames() | 返回session对象存储的每一个属性对象,结果集是一个Enumeration类的实例 |
getCreationTime() | 返回session对象被创建的时间,单位为毫秒 |
getId() | 返回session对象在服务器端的编号 |
getLastAccessedTime() | 返回当前session对象最后一次被操作的时间,单位为毫秒 |
getMaxInactiveInterval() | 获取session对象的生存时间,单位为秒 |
setMaxInactiveInterval(int interval) | 设置session对象的有效时间(超时时间),单位为秒 |
removeAttribute(String name) | 删除指定属性的属性名和属性值 |
setAttribute(String name,Java.lang.Object value) | 设定指定名字的属性,并把它存储在session对象中 |
invalidate() | 注销当前的session对象 |
4 Application域
Application域的范围是最大的,能在同一个web应用(一个应用存在多个会话)中使用,从应用启动到应用结束,Application域中的变量始终存在,如果不删除就可以一直使用。
作用在Application域的内置对象
application对象:为多个应用程序保存信息,所有用户都共同使用一个application对象。在JSP服务器运行时刻,仅有一个application对象,它由服务器创建,也由服务器自动清除,不能被用户创建和删除。
主要方法 | 说明 |
---|---|
getAttribute(String name) | 返回有name指定的名字application对象的属性值 |
getAttributeName() | 返回所有application对象属性的名字,结果集是一个Enumeration类型的实例 |
getInitParameter(String name) | 返回由name指定名字的application对象的某个属性的初始值 |
getServerInfo() | 返回Servlet编辑器当前版本信息 |
setAttribute(String name,Object obj) | 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定的一个属性 |
removeAttribute(String name) | 删除一个指定的属性 |