首页 > 代码库 > JSP九大内置对象辨析

JSP九大内置对象辨析

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6043096.html

JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception。

一、request

  当客户端向服务器发出一次请求时,就是通过request对象进行的数据传输。客户端把请求的行为以及向服务器传递的数据封装到request对象中,而服务器可以通过这个对象了解客户端的具体信息、提取请求的详细内容、获取请求中附带的参数等,然后服务器通过程序对请求进行处理,最后返回一个响应。request对象常用的方法有:

getAttribute(String name) 返回由name指定的属性值。若不存在则为空
getAttributes()返回request对象的所有属性的名字集合,其结果是一个枚举的实例。
getCookies() 返回客户端的所有Cookie对象,结果是一个Cookie数组。
getCharacterEncoding() 返回请求中的字符编码方式。
getHeader(String name) 获得HTTP协议定义的文件头信息
getHeaders(String name)    返回指定名字的request Header的所有值,其结果是一个枚举的
getHeaderNames()返回所有request Header的名字 ,其结果是一个枚举实例。
getMethod() 获得客户端向服务器端传送数据的方法,如:GET,POST。
getParameter(String name)获得客户端传送给服务器端的参数值。
getParameterNames() 获得客户端传送给服务器端的所有参数名字,其结果是一个枚举的实例
getParameterValues(String name) 获得指定参数的所有值。
getProtocol() 获取客户端向服务器端传送数据所依据的协议名称
getRequestURI() 获取发出请求字符串的客户端地址
getRemoteAddr() 获取客户端IP地址
getRemoteHost() 获取客户端名字 
getSession([Boolean create]) 返回和请求相关的session。create参数是可选的。当有参数create且这个参数值为true时,如果客户端还没有创建session,那么将创建一个新的session。
getServerName() 获取服务器的名字
getServerPort() 获取服务器的端口号
removeAttribute(String name) 删除请求中的一个属性

二、response

  客户端向服务器发出请求时,是通过具体的 路径名 来发出的,那个路径名就是服务器中对这个请求做出处理的文件。该文件中的代码围绕“获取请求、提取数据、处理请求、返回结果”来工作的。文件的最后,会返回一个响应给客户端,用结果来回应其请求。这个响应,就是response对象。服务器就是通过respose对象的一些列方法把结果传送回客户端的。常用方法有:

addCookie(Cookie cook) 添加一个Cookie对象,用来保存客户端的用户信息
addHeader(String name,String value) 添加HTTP文件头信息。该Header信息将传达到客户端,如果已经存在同名的则会覆盖
flushBuffer() 强制把当前缓冲区的内容发送到客户端
getOutputStream() 返回到客户端的输出流
sendError(int)    向客户端发送错误信息,参数为http状态码,如404 not found.
sendRedirect(String location) 把响应发送到另一个页面请求进行处理 即:重定向
getCharacterEncoding() 该方法获得此时相应所采用的字符编码类型
setHeader(String name,String value) 设置指定名字的HTTP文件头的值,若存在则会覆盖。

request与response的工作关系如下:

 技术分享

三、seesion

  从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这换个ID号发送到客户端,存放在Cookie中,直到客户关闭浏览器后,服务器端该客户的Session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。

   当一个客户端向服务器发出请求,与服务器建立起连接时,就建立了一次会话,服务器中就会为该会话(session)对象开辟一片空间,存放该次会话的一些共享的信息。在session对象中封装的属性会被本次会话中的所有页面、请求、响应所共享。比如:登录状态的标记。在用户通过登录页面向服务器发出登录请求并成功登录后,服务器为seesion对象开辟了一片内存空间,存放各种属性信息。这时可以设置一个属性为isLogin=true。此后的每个页面,都可以访问session对象的isLogin属性,依据其值的真假判断是否已登录,进而提供不同的界面显示、操作权限。会话的关闭是通过关闭浏览器实现的。当浏览关闭后,重新发出请求的话,就会建立新的会话,拥有新的session对象。当然,也可以选择用另一个浏览器访问服务器,也会建立新的会话,拥有新的session对象。而会话中断后留在服务器中的空闲session对象将会被回收。

常用方法有:

getAttribute()获取与指定名字相联系的属性
getAttributeNames()session对象中存储的每一个对象,其结果为一个枚举的实例
getCreateTime()    返回session的创建时间,最小单位这千分之一秒
getId()    返回唯一的标识,每个session的ID是不同的
getLastAccessedTime()返回和当前session对象相关的客户端最后发送的请求时间
invalidate() 销毁这个对象,
removeAttribute(String name) 删除与指定名字相联系的属性
setAttribute(String name,java.langObject obj) 设置指定名字的属性值并存储在session中,注意:属性值可以是一个对象!!!

四、application

  如果说session是一次会话的“全局变量”,那么application就是整个服务器的“全局变量”。application 对象可将信息保存在服务器中,直到服务器关闭。从服务器启动那一刻起,就会自动创建application对象,直到服务器关闭。期间,所有连接到该服务器上的客户都能访问这个application对象,不同客户、不同会话访问到的application对象都是同一个。换言之,application对象就是用来操作整个web服务器的。

常用方法有:

getAttribute(String name)返回指定名字的application对象的属性的值
getAttributeNames() 返回所有应用程序级对象的属性的名字 ,其结果为枚举的实例
setAttribute(String name,Object obj) 设置 指定名字的application对象的属性的值 
removeAttribute(string Key)通过关键字来删除一个对象的信息
getRealPath(String path)返回虚拟路径的真实路径
getContext(String URLPath)返回执行Web应用的application对象
getResource(String path) 返回指定资源的输入流
getServlet(String name) 返回 指定名称的servlet
getServlets() 返回所有的Servlet,返回类型为枚举型
getServletNames()  返回所有的Servlet名称,返回类型为枚举型
log(String msg,Throwable throwable)把轨迹以及给出的Throwable异常说明信息写入Servlet的日志文件

session、application的关系如图:

 技术分享

五、page

  一个page对象就是一个jsp页面,是当前jsp编译后的Servlet类的对象。我们可以通过page对象宏观地操作当前页面的状态,或者获取当前页面的servlet类。(注意:是宏观地操作,把jsp页面作为一个类,一个整体来指挥。但不能通过page对象获取页面的详细信息,或进行属性配置)

常用方法:

page.getClass()获得page对象的类
page.hashCode()获得page对象的hash码
page.toString()将此page对象转换为String类对象
page.notify()唤醒一个等待的进程
page.notifyAll()唤醒所有等待的进程
page.wait()使一个线程处于等待直到被唤醒
page.wait(long timeout)使一个线程处于等待直到timeout或被唤醒

六、pageContext

  pageContext对象提供了对JSP页面 所有的对象及命名空间 的访问,是一个实现访问JSP页面之间的数据、方法共享的容器,其提供存取所有关于jsp程序执行时期所要用到的属性方法。“页面上下文对象”的意思是之前的、当前的、之后的范围合一。比如:一个jsp页面,有请求接入(之前的),有当前页面内容(当前的),有对请求做出的响应(之后的),这三个范围加起来就是一个上下文对象。所以通过pageContext可以获取接入当前页面的请求、可以获取当前会话的session对象、可以获取当前页面将要作出response对象,可以获取当前页面出现的错误信息......总而言之,凡是与当前jsp页面有关联的一切对象、信息的统一,就是pageContext对象。所以,pageContext 对象的作用就是取得所有与当前页面有关的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。

常用方法:

getAttribute(String name,[int scope] )    scope用来检索一个特定的已经 命名的对象的范围

getAttributeNamesInScope()方法 ,检索对鞭个特定范围的每个属性String字符串名称的枚举。

getException()返回当前的exception对象
getRequest()返回当前的request对象
getResponse()返回当前的response对象
getServletConfig()返回当前页面的ServletConfig对象
getServletContext()返回ServletContext对象。这个对象对所有页面都是共享的
getSession() 返回当前的session对象
findAttribute() 按照页面,请求,会话以及应用程序范围顺序 实现对某个已经命名的属性的搜索。
setAttribute() 可以用来设置默认页面范围或特定范围之中的已命名对象。

removeAttribute()可以用来删除默认范围或特定范围内的已命名对象

page与pageContext关系如下图:

技术分享

七、out

  out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。

常用方法:

out.print()输出数据

out.println()输出数据并换行
out.newLine()输出一个换行符
out.flush()输出缓冲区里的数据
out.close()关闭输出流
out.clearBuffer()清除缓冲区里的数据,并把数据输出到客户端
out.clear()清除缓冲区里的数据,但不会把数据输出到客户端
out.getBufferSize()获得缓冲区大小
八、config

  config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。一般这个很少用到,开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。而不必在代码中用config对象来显式配置了。

九、exception

  exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用。在Java中利用try/catch的关键字来处理异常情况,但如果在JSP页面中没有用try-catch捕捉并处理异常,那么就会生成exception对象,并把这个exception对象传送到在page指令中设定的错误页面中,然后在错误提示页面中处理相应的exception对象。

常用方法:

getMessage()获取异常消息字符串
printStackTrace()显示异常的栈跟踪轨迹
toString()返回关于异常错误的简单消息描述

 

JSP九大内置对象辨析