目录
out
request
response
session
application
exception
page
config
pageContext
JSP内置对象的作用域
JSP内置对象是在JSP运行环境中已定义好的对象,可在JSP页面的脚本部分直接使用。
out对象
out 为输出流对象,主要用于向客户端输出流进行操作,可将有关信息发送到客户端的浏览器。
此外,通过out 对象,还可对输出缓存区与输出流进行相应的控制和管理。
out 是向客户端输出内容时所使用的常用对象,它其实是 javax.servlet.jsp.JspWriter 类的实例,具有 page 作用域。
JspWriter 类包含了 java.io.PrintWriter 类中的大部分方法,并新增了一些专为处理缓存而设计的方法,会抛出 IOException 异常(而PrintWriter不会)。
out对象常用方法
方法 | 说明 |
---|---|
void print(String str) | 输出数据 |
void println(String str) | 输出数据并换行 |
void newLine() | 输出一个换行符 |
int getBufferSize() | 获取缓存区大小 |
int getRemaining() | 获取缓存区剩余空间的大小 |
void flush() | 输出缓存区中的数据 |
void clear() | 清除缓存区中的数据,并关闭对客户端的输出流 |
void clearBuffer() | 清除缓存区的数据 |
void close() | 输出缓存区的数据,并关闭对客户端的输出流 |
boolean isAutoFlush() | 缓冲区满时是否自动清空。该方法返回布尔值(由page指令的autoFlush属性确定)。若返回值为true, 则表示缓存区满了会自动清除;若为false,则表示缓冲区满时不会自动清除,而是抛出异常。 |
request对象
request 对象为请求对象,其中封装了客户端的所有信息,如请求的来源、标头、Cookies 以及与与请求相关的参数值等。为获取请求的有关信息(如用户在form表单中所填写的数据等),可调用request对象的有关方法。
request 对象是 javax.servlet.http.HttpServletRequest 类的实例,具有 request 作用域,代表的是来自客户端的请求(如 form 表单中写的信息等),是最常用的对象之一。每当客户端请求一个JSP 页面时,JSP引擎就会创建一个新的 request 对象来代表这个请求。
request对象常用方法
方法 | 说明 |
---|---|
String getServerName() | 获取接受请求的服务器的主机名 |
int getServerPort() | 获取服务器接受请求所用的端口号 |
String getRemoteHost() | 获取发送请求所用的端口号 |
String getRemoteAddr() | 获取发送请求的客户端的IP地址 |
int getRemoteUser() | 获取客户端发送请求所用的端口号 |
String getRemoteUser() | 获取发送请求的客户端的用户名 |
String getQueryString() | 获取查询字符串 |
String getRequestURI() | 获取请求去掉host的部分路径(不包含查询字符串) |
String getRequestURL() | 获取请求的全路径 |
String getRealPath(String path) | 获取指定虚拟路径的真实路径 |
String getParameter(String name) | 获取指定参数的值(字符串) |
String[] getParameterValue(String name) | 获取指定参数的所有值 |
Enumeration getParameterNames() | 获取所有参数名的枚举 |
Cookies[] getCookies() | 获取与请求有关的Cookie对象(Cookie 数组) |
Map getParameterMap() | 获取请求参数的Map |
Object getAttribute(String name) | 获取指定属性的值。若不存在,则返回null |
Enumeration getAttributeNames() | 获取所有可用属性名的枚举 |
String getHeader(String name) | 获取指定标头的信息 |
Enumeration getHeaders(String name) | 获取指定标头的信息的枚举 |
int getIntHeader(String name) | 获取指定整数类型标头的信息 |
long getDateHeader(String name) | 获取指定日期类型标头的信息 |
Enumeration getHeaderNames() | 获取所有标头名的枚举 |
String getProtocol() | 获取客户端向服务器传送数据所使用的协议名 |
String getScheme() | 获取请求所使用的协议名 |
String getMethod() | 获取客户端向服务器端传送数据的方法(GET,POST) |
String getCharacterEncoding() | 获取请求的字符编码方式 |
String getServletPath() | 获取客户端所请求的文件的路径 |
String getContextPath() | 获取客户端所请求的文件的路径 |
int getContentLength() | 获取请求体的长度(字节数) |
String getContentType() | 获取客户端请求的 MIME 类型。若无法得到该请求的 MIME 类型,则返回 -1 |
ServletInputStream getInputStream() | 获取请求的输入流 |
BufferedReader getReader() | 获取解码后的请求体 |
HttpSession getSession(Boolean creat) | 获取与当前客户端请求相关联的 HttpSeesion 对象。若参数 creat 为true,或不指定参数 creat,且 session 对象已经存在,则直接返回,否则创建一个新的 session 对象并返回;若 creat 为false,且 session 对象已经存在,则直接返回,否则返回null |
void getRequestedSessionId | 获取 session 对象的ID号 |
void setAttribute(String name, Object obj) | 设置指定属性值 |
void setCharacterEncoding(String encoding) | 设置字符编码形式 |
response对象
response 对象为响应对象,用于对客户端的请求进行动态回应,可向客户端发送数据,如Cookies、时间戳、HTTP标头信息、HTTP状态码等。在实际应用中,response 对象主要用于将JSP数据处理后的结果传回到客户端。
response 对象是 javax.servlet.http.HttpServletResponse 类的实例,具有 page 作用域。当服务器创建 request 对象时,会同时创建用于响应该客户端的response对象。
response对象的常用方法
方法 | 说明 |
---|---|
void addHeader(String name, String value) | 添加指定标头。若指定标头已存在,则覆盖其值。 |
void setHeader(String name, String value) | 设置指定标头的值 |
boolean containsHeader(String name) | 判断指定标头是否存在 |
void sendRedirect(String url) | 重定向(跳转)到指定的页面(URL) |
String encodeRedirectURL(String url) | 对用于重定向的URL进行编码 |
String encodeURL(String url) | 对URL进行编码 |
void setCharacterEncoding(String encoding) | 设置响应的字符编码类型 |
String getCharacterEncoding() | 获取响应的字符类型 |
void setContentType(String type) | 设置响应的MIME类型 |
String getContentType() | 获取响应的MIME类型 |
void addCookie(Cookie cookie) | 添加指定的Cookie对象(用于保存客户端的用户信息) |
int getBuffersize() | 获取缓存区的大小 |
void setBuffersize(int size) | 设置缓存区的大小 |
void flushBuffer() | 将当前缓存区的内容强制发送到客户端 |
void reset() | 清空缓存区中的所有内容 |
void resetBuffer() | 清空缓存区中除了标头与状态信息以外的所有内容 |
ServletOutputStream getOutputStream() | 获取客户端的输出流对象 |
PrintWriter getWriter() | 获取输出流对应的Writer对象 |
void setContentLength(int length) | 设置响应的BODY长度 |
void setStatus(int sc) | 设置状态码(status code) |
void sendError(int sc) | 发送状态码 |
void sendError(int sc, String msg) | 发送状态码和状态信息 |
void addDateHeader(String name, long date) | 添加指定的日期类型标头 |
void addHeader(String name, String value) | 添加指定的字符串类型标头 |
void addIntHeader(String name, int value) | 添加指定的整数类型标头 |
void setDateHeader(String name, long date) | 设定指定日期类型标头的值 |
void setHeader(String name, String value) | 设置指定字符串类型标头的值 |
void setIntHeader(String name, int value) | 设置指定整数类型标头的值 |
session对象
session 对象为会话对象,该对象封装了当前用户会话的有关信息。借助于 seesion 对象,可对各个客户端请求期间的会话进行跟踪。在实际应用中,通常用 session 对象储存用户在访问各个页面期间所产生的有关信息,并在页面之间进行分享。
session 对象是 javax.servlet.http.HttpSession 类的实例,具有 session 作用域。当一个用户首次访问服务器上的一个 JSP 页面时,JSP引擎就会产生一个 session 对象,同时为该对象分配一个 String 类型的ID号,并将该 ID 号发送到客户端,存放在用户的 Cookie 中。当该用户再次访问连接服务器的其他页面的时,或从服务器连接到其他服务器再返回该服务器时,JSP 引擎将继续使用此前创建的同一个 session 对象。待用户关闭浏览器(即终止与服务器端的会话)后,服务器端才将该用户的 session 对象销毁。
session对象常用方法
方法 | 说明 |
---|---|
String getId() | 获取 session 对象的ID号 |
boolean isNew() | 判断是否为新的 session 对象。新的 session 对象是指该 session 对象已由服务器产生,但尚未客户端使用过 |
void setMaxInactiveInterval(int interval) | 设置 session 对象的有效时间或生存时间(单位为秒),即会话期间客户端两次请求的最长时间间隔。超过此时间,session 对象将会失效。若为 0 或负值,则表示该 session 对象永远不会过期 |
void getMaxInactiveInterval(int interval) | 获取 session 对象的有效时间或生存时间 |
void setAttribute(String name, Object obj) | 在 session 中设置指定的属性及其值 |
Object getAttribute(String name) | 获取指定的属性值。若不存在则,返回null |
Enumeration getAttributeNames() | 获取 session 中所有属性名的枚举 |
void removeAttribute(String name) | 删除 session 中指定的属性 |
void invalidate() | 注销当前的 session 对象,并删除其中的所有属性 |
long getCreationTime() | 获取 session 对象的创建时间,单位为毫秒,由 1970年1月1日零时算起。 |
long getLastAccessedTime() | 返回当前会话中客户端最后一次发出请求的时间,单位为毫秒,由 1970年1月1日零时算起。 |
application对象
application 对象为应用对象,负责提供 Web 应用程序在服务器运行期间的某些全局性信息。与 session 对象不同,application对象针对 Web 应用程序的所用用户,并由所有用户所共享(seesion 对象只针对各个不同的用户,是由各个用户所独享的)。
application 对象是 javax.servlet.ServletContext 类的实例(其实是包装了 Servlet 的 ServletContext 类的对象),具有 application 作用域。当 Web 服务器启动一个 Web 应用程序时,就产生了一个 application 对象。当关闭 Web 服务器或停止 Web 应用程序时,该 application 对象才会被销毁。各个 Web 应用程序的 application 对象是不相同的。
application对象常用方法
方法 | 说明 |
---|---|
void setAttribute(String name, Object obj) | 设置指定的属性及其其值 |
Object getAttribute(String name) | 获取指定的属性值 |
Enumeration getAttributeNames() | 获取所有的属性名的枚举 |
void removeAttribute(String name) | 删除指定的属性 |
Object getInitParameter(String name) | 获取指定的属性的初始值。若该属性不在,则返回null |
String getServerInfo() | 获取JSP引擎的名称及版本号 |
int getMajorVersion() | 获取服务器支持的Servlet API的主要版本号 |
int getMinorVersion() | 获取服务器支持的Servlet API的次要版本号 |
String getRealPath(String path) | 获取指定虚拟路径的真实路径(绝对路径) |
ServletContext getContext(String uripath) | 获取指定 web application 的application 对象 |
String getMimeType(String file) | 获取指定文件的 MIME 类型 |
URL getResourse(String path) | 获取指定资源(文件或目录)的URL对象 |
InputStream getResourseAsStream(String path) | 获取指定资源的输入流 |
RequestDispather getRequestDispatcher(String uripath) | 获取指定资源的RequestDispatcher对象 |
Servlet getServlet(String name) | 获取指定名称的Servlet |
Enumeration getServlets() | 获取所有Servlet的枚举 |
Enumeration getServletNames() | 获取所有Servlet名称的枚举 |
void log(String msg) | 将指定的信息写入log文件中 |
void log(String name, Throwable throwable) | 将stack trace(栈轨迹)及所产生的Throwable异常写入日志文件 |
void log(Exception exception, String msg) | 将指定异常的stack trace及错误信息写入日志 |
exception对象
exception 对象为异常对象,其中封装了从某个 JSP 页面中所抛出的异常信息,常用于处理 JSP 页面在执行时发生的错误或异常。
exception 对象是 javax.lang.Throwable 类的实例,具有 page 作用域。当一个 JSP 页面在运行过程中出现异常时,就会产生一个 exception 对象。不过,如果一个页面要使用exception对象,就必须将页面 page 指令的 isErroePage 属性设置为true,否则无法进行编译。通常,可使用 page 指令指定某一页面为专门的错误处理页面,从而将有关页面的异常或错误都集中到该页面中进行处理。
exception对象常用方法
方法 | 说明 |
---|---|
String getMessage() | 获取异常的描述信息(字符串) |
String getLocalizedMessage() | 获取本地化语言的异常描述信息(字符串) |
String toString() | 获取关于异常的简短描述信息(字符串) |
void printStackTrace(PrintWriter s) | 输出异常的栈轨迹 |
Throwable FillInStackTrace() | 重写异常的栈轨迹 |
page对象
page 对象为页面对象,是页面实例的引用,代表 JSP 页面本身,即 JSP 页面被转译后的 Servlet.。
page 对象是 java.lang.Object 类的实例,具有page作用域。从本质上看,page 对象是一个包含当前 Servelt 接口引用的变量,相当于 this 变量的一个别名。通过 page 对象,可以调用 Servlet 类所定义的方法。
page对象常用方法
方法 | 说明 |
---|---|
class getClass() | 获取当前对象的类 |
int hashCode() | 获取当前对象的哈希代码 |
boolean equals(Object obj) | 判断当前对象是否与指定对象相等 |
void copy(Object obj) | 把当前对象复制到指定的对象中 |
Object clone() | 克隆当前对象 |
String toString() | 获取当前对象的一个字符串 |
void notify() | 唤醒一个等待的线程 |
void notifyAll() | 唤醒所有等待的线程 |
void wait(int timeout) | 使一个线程处于等待状态,直到指定的超时时间结束或被唤醒 |
void wait() | 使一个线程处于等待状态,直到被唤醒 |
config对象
config 对象为配置对象,主要用于获取 Servlet 或者 JSp 引擎的初始化参数。
config 对象是 javax.servlet.ServletConfig 类的实例,具有 page 作用域。config 对象包含了初始化参数以及一些实用方法,可为实用 web.xml 问价的服务器程序与 JSP 页面在其环境中设置初始化参数。
config对象常用方法
方法 | 说明 |
---|---|
String getInitParameter(String name) | 获取指定Servlet初始化参数的值 |
Enumeration getInitParameterNames() | 获取所有Servlet初始化参数的枚举 |
String getServletName() | 获取Servlet的名称 |
ServeltContext getServeltContext() | 获取Servlet上下文(ServletContext) |
pageContext对象
pageContext 对象为页面上下文对象,主要用于访问页面的有关信息。其实,pageContext 对象是整个 JSP 页面的代表,相当于页面中的所有功能的集大成者,可实现对页面内所有对象的访问。
pageContext 对象是 javax.servlet.jsp.PageContext 类的实例,具有 page 作用域,其创建与初始化均有容器完成。PageContext 类定义了一些范围常量,包括 PAGE——SCOPE,REQUEST_SCOPE,SESSION_SCOPE 与 APPLICATION_SCOPE,分别表示 page 范围,request 范围,seesion 范围 与 application 范围。
在 pageContext 对象中,包含了传递给 JSP 页面的指令信息,存储了 request 对象与 response 对象的引用。此外,out对象,session 对象, application 对象与 config 对象也可以从 pageContext 对象中导出。
pageContext对象常用方法
方法 | 说明 |
---|---|
Exception getException() | 获取当前页的exception对象 |
JspWriter getOut() | 获取当前页的out对象 |
Object getPage() | 获取当前页的page对象 |
ServletRequest getRequest() | 获取当前页的request对象 |
ServletResponse getResponse() | 获取当前页的response对象 |
ServletConfig getServletConfg() | 获取当前页的config对象 |
ServletContext getServletContext() | 获取当前页的application对象 |
HttpSession getSession() | 获取当前页的session对象 |
void setAttribute(String name, Object obj) | 设置指定的属性及其值 |
void setAttribute(String name, Object obj, int scope) | 在指定范围设置指定的属性及其值 |
public Object getAttribute(String name) | 获取指定的属性的值,若无,返回null |
Object findAttribute(String name) | 按顺序在 page,request,session,application范围内找并返回指定的属性值 |
void removeAttribute(String name) | z在所有范围内删除指定的属性 |
void removeAttribute(Strinf name, int scope) | 在指定范围内删除指定的属性 |
int getAttributeScope(String name) | 获取指定属性的作用范围 |
Enumeration getAattributeNamesInScope(int scope) | 获取指定范围内的属性名枚举 |
void release() | 释放pageContext对象所占用的资源 |
void forward(String relativeUrlPath) | 将页面重定向到指定的地址 |
void include(String relativeUrlPath) | 在当前位置包含指定的文件 |
JSP内置对象的作用域
前面我们提到的具有page 作用域,具有 request 作用域等 ,其实是指JSP内置对象的作用域,
作用域是指对象的范围,JSP 的内置对象的作用一共有 4 个,分别是:
page、request、session、application
page 作⽤域:对应的内置对象是 pageContext、config、exception、page、response、out。
request 作⽤域:对应的内置对象是 request。
session 作⽤域:对应的内置对象是 session。
application 作⽤域:对应的内置对象是 application。
作用域的范围大小
page < request < session < application
page 只在当前页面有效。
request 在⼀次请求内有效。
session 在⼀次会话内有效。
application 对应整个 WEB 应⽤(即tomcat中)的。