JSP内置对象及其常用方法

个人博客:The Blog Of WaiterXiaoYY 欢迎来互相交流学习。

前言

JSP内置对象是在JSP运行环境中已定义好的对象,可在JSP页面的脚本部分直接使用。

文章目录

    • 前言
      • 1. out对象
      • 2.request对象
      • 3.response对象
      • 4.session对象
      • 5. application对象
      • 6. exception对象
      • 7. page对象
      • 8. config对象
      • 9. pageContext对象
      • JSP内置对象的作用域


1. 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,则表示缓冲区满时不会自动清除,而是抛出异常。

2.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) 设置字符编码形式

3.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) 设置指定整数类型标头的值

4.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日零时算起。

5. 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及错误信息写入日志

6. 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() 重写异常的栈轨迹

7. 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() 使一个线程处于等待状态,直到被唤醒

8. 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)

9. 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 对象中导出。

config对象的常用方法
方法 说明
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中)的。


整理完于2020.3.31,整理不易,点个赞呗~~~

你可能感兴趣的:(学习笔记)