JSP共有九大内置对象:

(1) HttpSession类的session对象
作用:主要用于来分别保存每个用户信息,与请求关联的会话;
         会话状态维持是Web应用开发者必须面对的问题。

(2) HttpServletRequest类的request对象
作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。

(3) HttpServletResponse类的respone对象
作用:代表响应对象,主要用于向客户端发送数据

(4) JspWriter类的out对象
作用:主要用于向客户端输出数据; 
        Out的基类是JspWriter

(5) ServletContex类的application对象
作用:主要用于保存用户信息,代码片段的运行环境;
        它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.

(6) PageContext类的pageContext对象
作用:管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。

(7) ServletConfig类的config对象
作用:代码片段配置对象,表示Servlet的配置。

(8) Object类的page(相当于this)对象
作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。

(9)Exception
作用:处理JSP文件执行时发生的错误和异常

EL共有11大内置对象:

JSP开发人员可以在EL表达式中使用EL隐式对象,而无须任何显式的编码活声明。隐式对象就是设计用来为 JSP 编程提供方便的,通过隐式对象,用EL编写的代码就可以直接使用JSP页面的一些最常用的地方。总共有11个隐式对象,这11个隐式对象可以分为5大类:
  *JSP隐式对象。
  *作用域访问隐式对象。
  *参数访问隐式对象。
  *首部访问隐式对象。
  *初始化参数访问隐式对象。
         JSP隐式对象类中只有一个EL隐式对象,这就是pageContext隐式对象。这与同名的JSP隐式对象实际上就是同一个对象。余下的EL隐式对象都是Java映射(map),他们只是提供了更容易的途径来访问pageContext隐式对象的某些性质。
     共有4个作用域隐式对象,分别为pageScope, requestScope, sessionScope和applicationScope. 这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。例如:附加到request作用域的username属性可以通过EL表达式${ requestScope.username}来直接访问。
     有两个参数访问隐式对象,可以用来访问HTTP请求参数(表单提交参数),即param和paramValues. param 是一个用于访问单值参数的映射, paramValues则可用于访问可能包含多个值的参数。接下来的实验会展示这将如何处理。
    有3个首部访问隐式对象,可以用于访问HTTP首部,分别是header, headerValues和cookie。如果想以原始的方式访问HTTP首部或cookie, 这些映射就很有用。
    另外还有一个初始化参数访问隐式对象:initParm。这个映射可以用于访问初始化参数的值,初始化参数的值一般都在web.xml中设置。

类别
标识符
描述
JSP
pageContext
PageContext 实例对应于当前页面的处理
作用域
pageScope
与页面作用域属性的名称和值相关联的 Map 类
requestScope
与请求作用域属性的名称和值相关联的 Map 类
sessionScope
与会话作用域属性的名称和值相关联的 Map 类
applicationScope
与应用程序作用域属性的名称和值相关联的 Map 类
请求参数
param
按名称存储请求参数的主要值的 Map 类
paramValues
将请求参数的所有值作为 String 数组存储的 Map 类
请求头
header
按名称存储请求头主要值的 Map 类
headerValues
将请求头的所有值作为 String 数组存储的 Map 类
Cookie
cookie
按名称存储请求附带的 cookie 的 Map 类
初始化参数
initParam
按名称存储 Web 应用程序上下文初始化参数的 Map 类

其实我的主要目的是为了搞清楚pageContext对象,如下:

Jsp中pageContext的作用
pageContext 隐含物件对应於javax.servlet.jsp.PageContext型态之物件,,隐含物件都自动的被加入至pageContext中,您可以藉由它来取得与JSP相关的隐含物件对应之Servlet物件,像是getRequest()可以取得ServletRequest, getServletConfig()可以取得ServletConfig,getSession()可以取得HttpSession等等。提供取得隐含物件对应之Servlet物件并不是pageContext的主要作用,它的主要功能在提供一个单一个介面,以管理各种的公开物件(像是HttpSession、ServletContext、ServletConfig、ServletRequest、ServletResponse等等),提供一个单一的API来管理属性作用范围等等。 
我们之前曾经使用过session的setAttribute()等方法设定一个进程可以共用的属性物件,使用session设定的属性在同一个进程中可以共用,除了session之外,还有pageContext、 request、application也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共用的属性物件,只不过这四个物件所设定的属性其共用范围各不相同。 
使用pageContext所设定的属性物件,其共用范围限於同一个 JSP页面,使用request所设定的属性物件,其在同一个request处理期间可以共用(包括forward给其它JSP页面),session物件所设定的属性物件则限於同一个进程作用期间可以共用,而application物件所设定的属性,则在整个Web应用程式中的JSP页面都可以共用。

以下举application为例,您可以将一些物件当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性物件,例如:

<% 
String attr = "字串物件"; 
out.println("设定属性给application:" + attr); 
application.setAttribute("str", attr); 
%>

我们先连上这个JSP网页以执行属性设定,然后我们再连上这个JSP网页:

<% 
String attr = (String) application.getAttribute("str"); 
out.println("取得application属性:" + attr); 
%>

由於我们之前已经将字串物件设定在application中作为属性,所以我们可以在上面这个页面中取得之前设定的物件,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等物件,只要在允许的作用范围中,就可以取得所设定的属性物件。

您可以使用pageContext物件来设定属性,并指定属性的作用范围,而不用使用个别的pageContext、request、session、 application来进行设定,这就是之前所提的,以pageContext提供一个单一的API来管理属性作用范围,您可以使用以下的方法来进行设定:

getAttribute(String name, int scope) 
setAttribute(String name, Object value, int scope) 
removeAttribute(String name, int scope)

其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、pageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,我们可以将上面的两个JSP页面改为以下的形式:

<% 
String attr = "字串物件"; 
out.println("设定属性给application:" + attr); 
pageContext.setAttribute("str", attr, pageContext.APPLICATION_SCOPE); 
%>

<% 
String attr = (String) pageContext.getAttribute("str", pageContext.APPLICATION_SCOPE); 
out.println("取得application属性:" + attr); 
%>

JSP内置对象和EL内置对象的更多相关文章

  1. JSP 4个域对象-9个内置对象-11个EL隐式对象

    一. 四大域对象 1. PageContext :页面范围的数据 2. ServletRequest:请求范围的数据 3. HttpSession:会话范围的数据 4. ServletContext: ...

  2. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  3. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

  4. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  5. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

    原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...

  6. JSP&EL 内置对象

    JSP&EL 内置对象 转载▼   具体的JSP和El中的内置对象见下表,由于我写在了excel中,也不知道怎么把excel发出来,就截了图. 相关问题: Q1: JSP:EL中 pageCo ...

  7. JSP脚本中的9个内置对象

    JSP脚本中包含9个内置对象,这9个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化.也就是说它们已经是对象,可以直接使用. 我们随意打开一个由JSP页面生成的Ser ...

  8. jsp九个内置对象、四个域对象及Servlet的三大域对象

    一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...

  9. 1.3(学习笔记)JSP(Java Server Pages)内置对象

    一.内置对象 内置对象又称内建对象.隐式对象,是由服务器自动创建实例化的, 用户在使用时不需要显示的创建,可直接使用. jsp内置对象名称,类型及作用域 Scope代表该内置对象的作用范围,page表 ...

随机推荐

  1. APP热修复

    APP热修复的概念: APP修复是针对修复app中的bug场景来定义的.当我们已上线的app出现bug的时候,我们想在用户不知情的情况下修复这个bug,那么就会用到热修复. APP热修复的实现原理: ...

  2. E. The Values You Can Make 背包,同时DP

    http://codeforces.com/problemset/problem/688/E 题目需要在n个数中找出一个集合,使得这个集合的和为val,然后问这些所有集合,能产生多少个不同的和值. 题 ...

  3. [转]Monkey测试简介

    转自:http://www.cnblogs.com/manuosex/p/3215270.html 在android手机上做自动化测试,monkey比cts,Android UnitTest 好用多了 ...

  4. 45 个非常有用的 Oracle 日期查询语句

    日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MO ...

  5. Java用SAX解析XML

    要解析的XML文件:myClass.xml <?xml version="1.0" encoding="utf-8"?> <class> ...

  6. 学习笔记 第十三章 使用CSS3新布局

    第13章   使用CSS3新布局 [学习重点] 设计多列布局 设计弹性盒布局样式 使用CSS3布局技术设计适用移动需求的网页 13.1  多列布局 CSS3使用columns属性定义多列布局,用法如下 ...

  7. Elasticsearch--集群&吞吐量

    目录 高查询和高吞吐量 过滤器缓存 字段数据缓存和断路器 断路器 存储模块 索引缓冲和刷新率 索引刷新率 线程池的配置 一些通用的建议来配置高索引和查询吞吐量的集群 高查询和高吞吐量 过滤器缓存 过滤 ...

  8. filter 过滤器加载流程

    过滤器例子 <!--A过滤器--><filter> <filter-name>mdamptRightLimitFilter</filter-name> ...

  9. 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)

    随着业务发展,公司需要提高数据安全与性能需求,所以需要对新技术预研(先采坑),做技术积累: 了解相关AlwaysOn 故障转移集群(热备),数据路由(ICX),Moebius(莫比斯数据路由) 决定测 ...

  10. shellinabox的安装使用

    一.简介 Shell In A Box(发音是shellinabox)是一款基于Web的终端模仿器,由Markus Gutschke开辟而成.它有内置的Web办事器,在指定的端口上作为一个基于Web的 ...