JavaWeb-JSP九大内置对象和四大作用域

JSP九大内置对象和四大作用域

目录

JSP九大内置对象

request

response

session

out

application

pageContext

page

config

exception

JSP四大作用域

RequestScope

PageScope

SessionScope

ApplicationScope


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 应用程序对象

思维导图

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值