JSP 九大内置对象(转)

九大对象:

  内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用

  out: javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期)

  request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP

  请求的细节(参数,属性,头标和数据)。作用域为request(用户请求期)。

  方法由可查看API

  response:javax.servlet.ServletResponse的子类型,此对象封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状态,发送HTTP重定向和编码URL。作用域为page(页面执行期)。

  pageContext:javax.servlet.jsp.PageContext(抽象类)类型,作用域为page(页面执行期)。此对象提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法:

  该对象的方法都是抽象方法

  session:javax.servlet.http.HttpSession类型,主要用于跟踪对话。作用域session(会话期—)。

  HttpSession是一个类似哈希表的与单一WEB浏览器会话相关的对象,它存在于HTTP请求之间,可以存储任

  何类型的命名对象。

  如果不需要在请求之间跟踪会话对象,可以通过在page指令中指定session="false"

  需要记住的是pageContext对象也可以与session.getAttribute(),session.setAttribute()一样的方式取得并设置会话属性。

  application:javax.servlet.ServletContext类型,servlet的环境通过调用getServletConfig

  ().getContext()方法获得。作用域是application(整个程序运行期)。它提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径,注册信息的方式

  config:javax.servlet.ServletConfig,作用域为page(页面执行期)

  exception:java.lang.Throwable,通过JSP错误页面中一个catch块已经益出但没有捕获的

  java.lang.Throwable的任意实例,传向了errorPage的URI。作用域为page(页面执行期)。注意

  exception只有在page指令中具有属性isErrorPage="true"时才有效。

  page:java.lang.Object类型,指向页面自身的方式。作用域为page(页面执行期

  JSP中九大内置对象为:

  

request           请求对象            类型 javax.servlet.ServletRequest       作用域 Request

response         响应对象              类型 javax.servlet.SrvletResponse       作用域  Page

pageContext    页面上下文对象       类型 javax.servlet.jsp.PageContext      作用域    Page

session           会话对象               类型 javax.servlet.http.HttpSession     作用域    Session

application      应用程序对象          类型 javax.servlet.ServletContext        作用域    Application

out                输出对象               类型 javax.servlet.jsp.JspWriter           作用域    Page

config             配置对象               类型 javax.servlet.ServletConfig          作用域    Page

page              页面对象               类型 javax.lang.Object                       作用域    Page

exception        例外对象                类型 javax.lang.Throwable                  作用域    page

  

request 对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象常用的方法有:getParameter、getParameterNames 和getParameterValues 通过调用这几个方法来获取请求对象中所包含的参数的值。

  response 对象代表的是对客户端的响应,也就是说可以通过response 对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用

  pageContext 对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性

  常用的方法有 :findAttribute、getAttribute、getAttributesScope 和getAttributeNamesInScope

  一般情况下pageContext对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理。

  session    对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。

  概要

  HTTP是无状态(stateless)协议;

  Web Server 对每一个客户端请求都没有历史记忆;

  Session用来保存客户端状态信息;

  由Web Server 写入;

  存于客户端;

  客户端的每次访问都把上次的session记录传递给Web Server;

  Web Server读取客户端提交的session来获取客户端的状态信息

  application 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。

  out 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了pirnt和println之外,还包括clear、clearBuffer、 flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法

  “config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。

  “page” 对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。

  “exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用四个作用域:

  何为作用域

  先让我们看看效果:

  大概流程是这样的,我们访问04-01/index.jsp的时候,分别对pageContext, request, session,

  application四个作用域中的变量进行累加。(当然先判断这个变量是不是存在,如果变量不存在,则要把变量初始化成1。)计算完成后就从index.jsp执行forward跳转到test.jsp。在test.jsp里再进行一次累加,然后显示出这四个整数来。

  从显示的结果来看,我们可以直观的得出结论:

  page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。

  request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。

  session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。

application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。

  而作用域规定的是变量的有效期限。

  如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。

  从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

  如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。

  所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

  如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。

  所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。

  如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。

  整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。

  application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

  与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request,session都是完全隔离的,无论如何修改都不会影响其他人的数据。

  我们使用public Object getAttribute(String name)获得变量值,使用public void setAttribute(String name, Object value)将变量值保存到对应作用域中。举个pageContext的例子就是:

  

// page

  Integer countPage = (Integer) pageContext.getAttribute("countPage");

  if (countPage == null) {

  pageContext.setAttribute("countPage", 1);

  } else {

  pageContext.setAttribute("countPage", countPage + 1);

  }

  

  这里先从pageContext中取出名为countPage的整数,因为返回的都是java.lang.Object类型,所以需要强制转换成我们需要的整形。这里取得的变量如果不存在就会返回null,通过判断countPage == null来辨别变量是否存在,如果不存在就设置为1,如果存在就进行累加,最后使用setAttribute()方法将修改后的变量值放入pageContext。

  将其中的pageContext换成request, session, application就可以操作其他三个作用域中的变量。

(转自   http://www.233.com/Java/jichu/20100329/091644792.html)

时间: 2024-11-05 02:39:21

JSP 九大内置对象(转)的相关文章

黑马程序员【JSP九大内置对象和四个作用域】转载

http://www.cnblogs.com/fanfu1/p/4530980.html JSP九大内置对象和四个作用域 ------- android培训.java培训.期待与您交流! ---------- 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JSP中一共有九个以及四个作用域,在下面的文章中我们会一一讲解. 现在我们先来说一下四个作用域,以便描述各大对象都分属于什么作

jsp九大内置对象及四个作用域【转】

1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理.首先,将获取的 字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象 即可.如下: String textContent=request.getParameter("boy") byte b[]=textContent.get

详解JSP九大内置对象

内置对象:就是在JSP中无需创建就可使用的称为内置对象,它是有容器创建的(如Tomcat.JBoss.weblgic等容器创建). JSP九大内置对象分别为:out.request.response.session.application.pageContext.page.config.exception. 1.out对象 向客户端输出信息,它是JspWriter类的一个实例. 常用的有out.print();或out.println(); 2.request对象 获取客户端传递到服务器的信息.

JSP九大内置对象和四种属性范围解读

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文首先主要解说了JSP中四种属性范围的概念.用法与实例. 然后在这个基础之上又引入了九大内置对象,并对这几大内置对象一个一个的进行分析的解读.内容非常具体,例子都附有代码和执行的结果截图. 本文project下载 一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性.跳转之后无效request:在一次服务请求范围内.server跳转后依旧有效se

零散知识点(面向对象七大设计原则,jdbc--BaseDao,jsp九大内置对象。四个作用域)

面向对象七大设计原则: 1.开闭原则(OCP:Open-Closed Principle)2.里氏替换原则(LSP:Liskov Substitution Principle) 3.单一职责原则(SRP:Single responsibility principle)4.接口隔离原则(ISP:Interface Segregation Principle)5.依赖倒置原则(DIP:Dependence Inversion Principle)6.迪米特法则(LOD:Law of Demeter)

JSP九大内置对象的作用和用法总结(转发)

jsp九大内置对象: 内置对象/作用域(每一种作用域的生命周期是不一样的): 1, application 全局作用域 2, session 会话作用域 3, request 请求作用域 4, pageContext 页面作用域 内置对象 5, response 响应对象 6, out 输出流对象 7, page 当前页面对象的实例 8, exception 异常 9, config ServletConfig/FilterConfig对象 优先级(按照生命周期的长短): application

JSP九大内置对象的作用和用法总结【转】

JSP九大内置对象的作用和用法总结? JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1.request对象javax.servlet.http.HttpServletRequest request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据.(包括头信息.系统信息.请求方式以及请求参数等).request对 象的作用域

Java Web学习(11):JSP九大内置对象(一)

在学习九大内置对象之前先来看看Web应用程序的请求响应模式. Web应用程序请求响应模式 Web应用程序的请求响应模式图示: 1)用户发送请求(request) 2)服务器给用户响应(response) 生活案例: JSP九大内置对象一览 JSP内置对象是Web容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明,也就是不使用 new关键字就可以使用的内置对象.JSP内置对象也被称为预定义变量. 九大内置对象为: 九个内置对象的简介见下表: out对象 out对象是javax.

五------Jsp九大内置对象。

Jsp九大内置对象,当中最基本的是前五个对象. 5-1 out对象 out对象是JSPWriter类的实例.是向client输出内容经常使用的对象. out对象经常使用的方法例如以下: 1.out.println():向client打印字符串 2,out.clear():清除缓冲区的内容,假设在flush之后调用会抛出异常 3,out.clearBuffer():清除缓冲区的内容,假设在flush之后调用不会抛出异常 4,out.flush():将缓冲区内容输出到client 5,int get

Java Web学习(13):JSP九大内置对象(三)

application对象 什么是application? 服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application 对象都是同一个,直到服务器关闭.但是与session不同的是,所有客户的application对象都是同一个,即所有客户 共享这个内置的application对象. appliaction对象 application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.Se