JSP九大内置对象和四大作用域
目录
JSP九大内置对象
request
javax.servlet.http.HttpServletRequest
代表的是来自客户端的请求 , 客户端发送的请求封装在 request 对象中 , 通过它才能了解到用户的请求信息 , 然后作出响应 , 它是HTTPServletRequest 的实例 , 作用域为 request ( 响应生成之前 )
常用方法
• Object getAttribute(String name);// 返回指定属性的属性值
• void setAttribute(String key, Object value);// 设置属性的属性值
• Enumeration getAttributeNames();// 返回所有可以用属性名的枚举
• String getParameter(String name);// 返回指定name的参数值
• Enumeration getParameterNames();// 返回可用参数名的枚举
• String[] getParameterValues(String name);// 返回包含参数name的所有制的数组
• ServletInputStream geetInputStream();// 得到请求体中一行的二进制流
• BufferedReader getReader();// 返回解码过了的请求体
• String getServerName();// 返回接收请求的服务器主机名
• int getServerPort();// 返回服务器接收此请求所用的端口号
• String getRemoteAddr();// 返回发送请求的客户端的IP地址
• String getRemoteHost();// 返回发送请求的客户端主机名
• String getRealPath();// 返回一个虚拟路径的真实路径
• String getCharacterEncoding();// 返回字符编码方式
• int geContentLength();// 返回请求体的长度 ( 字节数 )
• String getContentType();// 返回请求体的MIME类型
• String getProtocol();// 返回请求用的协议类型以及版本号
• String getScheme();// 返回请求用的协议名称( 例如 : http https ftp )
response
javax.servlet.http.HttpServletResponse
对象代表的是对客户端的响应 , 也就是说可以通过 response 对象来组织发送到客户端的数据 ; 但是由于组织方式比较底层 , 所以不建议初学者使用 , 需要向客户端发送文字时直接使用 ; 它是 HttpServletResponse 的实例 ; 作用域为 page ( 页面执行期 )。
常用方法
• String getCharacterEncoding();// 返回响应用的是哪种字符编码
• ServletOutputStream getOutputStream();// 返回响应的一个二进制输出流
• PrintWriter getWriter();// 返回可以向客户端输出字符的一个对象
• void setContentLength(int len);// 设置响应头长度
• void setContentType(String type);// 设置响应的MIME类型
• void sendRedirect(String location);// 重新定向客户端的请求
session
javax.servlet.http.HttpSession
指的是客户端与服务器的一次会话 , 从客户连接到服务器的一个 WebApplication 开始 , 直到客户端与服务器断开连接为止 ; 它是 HTTPSession 类的实例 , 作用域为 session ( 会话期 )。
常用方法
• long getCreationTime();// 返回SESSION创建时间
• public String getId();// 返回SESSION创建时JSP引擎为它设的惟一ID号
• long getLastAccessedTime();// 返回此SESSION里客户端最近一次请求时间
• int getMaxInactiveInterval();// 返回两次请求间隔多长时间此SESSION被取消(ms)
• String[] getValueNames();// 返回一个包含此SESSION中所有可用属性的数组
• void invalidate();// 取消SESSION,使SESSION不可用
• boolean isNew();// 返回服务器创建的一个SESSION,客户端是否已经加入
• void removeValue(String name);// 删除SESSION中指定的属性
• void setMaxInactiveInterval();// 设置两次请求间隔多长时间此SESSION被取消(ms)
out
javax.servlet.jsp.JspWriter
out 对象是 JspWriter 类的实例,是向客户端输出内容常用的对象 ; 作用域为 page ( 页面执行期 )。
常用方法
• void clear();// 清除缓冲区的内容
• void clearBuffer();// 清除缓冲区的当前内容
• void flush();// 清空流
• int getBufferSize();// 返回缓冲区以字节数的大小,如不设缓冲区则为0
• int getRemaining();// 返回缓冲区还剩余多少可用
• boolean isAutoFlush();// 返回缓冲区满时,是自动清空还是抛出异常
• void close();// 关闭输出流
application
javax.servlet.ServletContext
实现了用户间数据的共享 , 可存放全局变量 ; 它开始于服务器的启动 , 直到服务器的关闭 , 在此期间 , 此对象将一直存在 ; 这样在用户的前后连接或不同用户之间的连接中 , 可以对此对象的同一属性进行操作 ; 在任何地方对此对象属性的操作 , 都将影响到其他用户对此的访问 ; 服务器的启动和关闭决定了 application 对象的生命 ; 它是 ServletContext 类的实例 ; 作用域为 application。
常用方法
• Object getAttribute(String name);// 返回给定名的属性值
• Enumeration getAttributeNames();// 返回所有可用属性名的枚举
• void setAttribute(String name,Object obj);// 设定属性的属性值
• void removeAttribute(String name);// 删除一属性及其属性值
• String getServerInfo();// 返回JSP(SERVLET)引擎名及版本号
• String getRealPath(String path);// 返回一虚拟路径的真实路径
• ServletContext getContext(String uripath);// 返回指定WebApplication的application对象
• int getMajorVersion();// 返回服务器支持的Servlet API的最大版本号
• int getMinorVersion();// 返回服务器支持的Servlet API的最大版本号
• String getMimeType(String file);// 返回指定文件的MIME类型
• URL getResource(String path);// 返回指定资源(文件及目录)的URL路径
• InputStream getResourceAsStream(String path);// 返回指定资源的输入流
• RequestDispatcher getRequestDispatcher(String uripath);// 返回指定资源的RequestDispatcher对象
• Servlet getServlet(String name);// 返回指定名的Servlet
• Enumeration getServlets();// 返回所有Servlet的枚举
• Enumeration getServletNames();// 返回所有Servlet名的枚举
• void log(String msg);// 把指定消息写入Servlet的日志文件
• void log(Exception exception,String msg);// 把指定异常的栈轨迹及错误消息写入Servlet的日志文件
• void log(String msg,Throwable throwable);// 把栈轨迹及给出的Throwable异常的说明信息 写入Servlet的日志文件
pageContext
javax.servlet.jsp.PageContext
提供了对 JSP 页面内所有的对象及名字空间的访问 , 也就是说他可以访问到本页所在的 session , 也可以取本页面所在的 application 的某一属性值 , 他相当于页面中所有功能的集大成者 , 它的本类名也叫 pageContext ; 作用域为 Pageconfig 对象。
常用方法
• JspWriter getOut();// 返回当前客户端响应被使用的JspWriter流(out)
• HttpSession getSession();// 返回当前页中的HttpSession对象(session)
• Object getPage();// 返回当前页的Object对象(page)
• ServletRequest getRequest();// 返回当前页的ServletRequest对象(request)
• ServletResponse getResponse();// 返回当前页的ServletResponse对象(response)
• Exception getException();// 返回当前页的Exception对象(exception)
• ServletConfig getServletConfig();// 返回当前页的ServletConfig对象(config)
• ServletContext getServletContext();// 返回当前页的ServletContext对象(application)
• void setAttribute(String name,Object attribute);// 设置属性及属性值
• void setAttribute(String name,Object obj,int scope);// 在指定范围内设置属性及属性值
• public Object getAttribute(String name);// 取属性的值
• Object getAttribute(String name,int scope);// 在指定范围内取属性的值
• public Object findAttribute(String name);// 寻找一属性,返回起属性值或NULL
• void removeAttribute(String name);// 删除某属性
• void removeAttribute(String name,int scope);// 在指定范围删除某属性
• int getAttributeScope(String name);// 返回某属性的作用范围
• Enumeration getAttributeNamesInScope(int scope);// 返回指定范围内可用的属性名枚举
• void release();// 释放pageContext所占用的资源
• void forward(String relativeUrlPath);// 使当前页面重导到另一页面
• void include(String relativeUrlPath);// 在当前位置包含另一文件
page
java.lang.Object
page 对象就是指向当前 JSP 页面本身 , 有点象类中的 this 指针 , 它是 Object 类的实例 ; page 对象代表了正在运行的由 JSP 文件产生的类对象 , 不建议初学者使用 ; 作用域为 page ( 页面执行期 )。
常用方法
• class getClass();// 返回此Object的类
• int hashCode();// 返回此Object的hash码
• boolean equals(Object obj);// 判断此Object是否与指定的Object对象相等
• void copy(Object obj);// 把此Object拷贝到指定的Object对象中
• Object clone();// 克隆此Object对象
• String toString();// 把此Object对象转换成String类的对象
• void notify();// 唤醒一个等待的线程
• void notifyAll();// 唤醒所有等待的线程
• void wait(int timeout);// 使一个线程处于等待直到timeout结束或被唤醒
• void wait();// 使一个线程处于等待直到被唤醒
• void enterMonitor();// 对Object加锁
• void exitMonitor();// 对Object开锁
config
javax.servlet.ServletConfig
config 对象是在一个 Servlet 初始化时 , JSP 引擎向它传递信息用的 , 此信息包括 Servlet 初始化时所要用到的参数 ( 通过属性名和属性值构成 ) 以及服务器的有关信息 ( 通过传递一个 ServletContext 对象 ) ; 作用域为 page。
常用方法
• ServletContext getServletContext();// 返回含有服务器相关信息的ServletContext对象
• String getInitParameter(String name);// 返回初始化参数的值
• Enumeration getInitParameterNames();// 返回Servlet初始化所需所有参数的枚举
exception
java.lang.Throwable
这是一个例外对象 , 当一个页面在运行过程中发生了例外 , 就产生这个对象 ; 如果一个JSP页面要应用此对象 , 就必须把 isErrorPage 设为true , 否则无法编译 ; 他实际上是 Throwable 的对象 ; 作用域为 page。
常用方法
• String getMessage();// 返回描述异常的消息
• String toString();// 返回关于异常的简短描述消息
• void printStackTrace();// 显示异常及其栈轨迹
• Throwable FillInStackTrace();// 重写异常的执行栈轨迹
JSP四大作用域
RequestScope
request表示一次客户端的请求。一次请求的生命周期从客户端发起到服务器接收并响应该请求,或者将该请求forward到另一个页面或者Servlet进行处理而结束。在此期间,本次请求的参数,属性都是有效的;一旦客户端刷新浏览器,重新发起请求,则之前的请求参数和属性都将失效。
特别需要注意的是,当我们使用动作将当前请求转向另一个页面或者Servlet的时候,该请求的参数和属性也一并转过去,并不会因为动作而丢失request的参数和属性。
包括
request 请求对象
PageScope
page直译就是页面的意思,所以page作用域就比较好理解了——page作用域表示只在当前页面有效。当程序运行跑出了当前的页面,你就无法在其它的页面访问当前页面设置的属性值。
包括
page 页面对象
response 响应对象
pageContext 页面上下文对象
out 输出对象
config 配置对象
exception 例外对象
SessionScope
当我们向服务器发送第一个请求开始,只要页面不关闭,或者会话未过期(默认30分钟),或者未调用HttpSession的invalidate()方法,接下来的操作都属于同一次会话的范畴。
在JSP中,每当向服务器发送一个请求,服务器响应这个请求的时候,会在客户端的Cookie中写一个session id值。每次发送请求的时候,会将该session id值一起发送到服务器端,服务器端根据该session id值来判断每次请求是否属于同一个session的范畴之内。
包括
session 会话对象
ApplicationScope
application的作用域是最广的,它代表着整个Web应用的全局变量,对每一个页面,每一个Servlet都是有效的。当我们在application中设置属性时,这个属性在任意的一个页面都是可以访问的。
在application作用域中设置的属性如果不手动调用removeAttribute函数进行删除的话,那么application中的属性将永远不会删除,如果Web容器发生重启,此时application范围内的所有属性都将丢失。
包括
application 应用程序对象