Java中的隐式对象

    作者:课课家教育更新于: 2016-08-11 18:36:16

    大神带你学编程,欢迎选课

      实际上。JSP应用程序的本质是特殊的Web组件。在每一次处理用户请求之前,J2EE Web容器会首先将其转换成Servlet。而在每一个JSP应用程序中都会有一套完整的隐式对象。那这个隐式对象是什么?我们下面来了解一下隐式对象的概述以及其中的对象。

      什么是隐式对象?

      隐式对象可以让开发人员访问容器提供的服务以及资源。而这些对象之所以被定义为是隐式的,是因为你在使用的时候不必显示的声明它们。而且不论你是否会对它们进行声明,它们都会在每个JSP页面中进行定义,并且在后台由容器进行使用。

      JSP隐式对象也被称为预定义变量,下面对JSP中所支持的隐式对象先进行简单的描述:

    JSP中所支持的隐式对象

    下面是隐式对象的结构分布

    隐式对象的结构分布

      application

      Application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。

      这个对象在JSP页面初始化的时候被创建的,它随着jspDestroy()方法的调用而被移除。它是使用范围最广的一个上下文状态。而在JSP的整个生命周期中,这个对象都代表这这个JSP页面。

      它允许JSP页面的Servlet共享信息给处在同一应用程序中的所有Web组件。并且通过向Application中添加属性之后,所有组成你Web的JSP文件都可以对这些属性进行访问

      config

      config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。下面是config对象的使用方法:

      config.getServletName(); //但是由于这个对象不是很重要所以不常使用。

      它允许将初始化数据传递给一个JSP页面的Servlet。并且允许开发者访问Servlet或者JSP引擎的初始化参数,例如文件路径等。

      request

      request对象是javax.servlet.http.HttPServletRequest 类的实例。每当客户端请求一个JSP页面的时候,这个request对象就是JSP引擎所制造用于代替这个请求的。request对象提供了对HTTP请求数据的访问,同时还提供了用于加入特定于请求的数据的上下文。

      request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。

      response

      response对象是javax.servlet.http.HttpServletResponse类的实例。在上文的request对象被JSP引擎创建的时候,response对象也会被同时创建,response对象用于响应这个客户端。

      response对象允许直接访问 HTTPServletResponse 对象。而response对象也定义了可以处理http头模块的接口。开发者们通过这个对象可以添加新的cookies、时间戳等。但是现在的程序员不是经常使用这个对象了。

      out

      out对象是 javax.servlet.jsp.JspWriter 类的实例,这个对象一般用于在response对象中写入内容。而且out对象提供了对Servlet 输出流的访问。

      在这个Jsp类中包含了大部分java.io.PrintWriter类中的方法。不过在JspWrite中新增了一些专门用于处理缓存的方法。

      JspWrite类对象进行不同的实例化操作是要根据页面中是否有缓存来决定的。开发者可以在开page指令中使用buffered = 'false'属性轻松的关闭缓存。

      下面是我们用于输出boolean、char、int、double、string以及Object等数据类型的重要方法:

      Session

      session对象是 javax.servlet.http.HttpSession 类的实例。这个对象和Java Servlet中的Session对象有一样的行为。而且它可能是状态管理上下文中使用得最多的对象。其中“会话”的概念是指单个用户与 Web 应用程序在几个请求上进行交互。

      pageContext

      pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。惟一一个 API 来管理具有不同作用域的属性就是由这个对象所提供的。这个API在实现JSP自定义标记处理程序时使用得非常多。

      这个对象主要的用处如下:

       1)主要用于访问页面信息并且过滤大量的实现细节。

       2)存储了request 对象以及response 对象的引用。

       3)application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

       4)这个对象中包含了传给JSP页面的指令信息,例如:缓存信息,ErrorPage URL,页面scope等。

      在PageContext 对象的PageContext 类中提供了大概40多种方法,而这些方法一半是继承于javax.servlet.jsp.JspContext 类。而在这里我们要说一下的一个重要方法就是removeArribute(),它可接受一个或两个参数。比如,pageContext.removeArribute("attrName")移除四个scope中相关属性,但是下面这种方法只移除特定scope中的相关属性:

      pageContext.removeAttribute("attrName", PAGE_SCOPE);

      而在这个类包含了包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE等等的字段。

      page

      这个对象就是JSP页面的处理当前请求的Servlet的实例。它可以被看做是整个JSP页面的代表。但是,一般来说JSP页面作者很少会使用这个对象。

      exception

      这个对象中含有只能由指定的 JSP“error pages”访问的异常数据和异常信息。它的作用是常被用于产生对出错条件的适当响应。

      虽然说部分的隐式对象只提供单一的功能,但是它们几个结合起来就可以提高多种的功能。如下:

    几个隐式对象所形成的的功能

          在本文中,您已经看到了我们是如何使用隐式对象来快速、容易地开发 Web 应用程序的。总的来说,由于JSP是嵌入式的语言,不能显式的把一些必须的参数传递进来,所以就在JSP规范中提供了几个隐含的对象来实现折椅功能。对Java有兴趣并且正在学习的朋友可以在本网站中进行学习或者直接点击文中的链接。

课课家教育

未登录

1