原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

首先说明一下jsp9大内置对象

(1)HttpSession类的session对象
作用:主要用于来分别保存每个用户信息,与请求关联的会话;
         会话状态维持是Web应用开发者必须面对的问题。
(2) HttpServletRequest类的request对象
作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。
(3) HttpServletResponse类的respone对象
作用:代表响应对象,主要用于向客户端发送数据
(4) JspWriter类的out对象
作用:主要用于向客户端输出数据; 
        Out的基类是JspWriter
(5) ServletContext类的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大内置对象

(1)pageScope:获取jsp中pageContext域属性,相当于pageContext.getAttribute("xxx")
(2)requestScope:获取request域属性,相当于request.getAttribute("xxx")
(3)sessionScope:获取session域属性,相当于session.getAttribute("xxx")
(4)applicationScope:获取application域属性,相当于application.getAttribute("xxx")
(5)param:对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数,相当于request.getParameter("xxx")
(6)paramValues:对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues("xxx")
(7)header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader("xxx")
(8)headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders("xxx")
(9)initParam:获取web.xml中<context-param>内的参数,${ initParam.xxx},xxx就是<param-name>标签内的值,进而得到<param-value>中的值
(10)cookie:用于获取cookie,Map<String,Cookie>,其中key是cookie的name,value是cookie对象,例如${cookie.JSESSIONID.value }就是获取sessionId

(11)pageContext:可以获取JSP九大内置对象,相当于使用该对象调用getxxx()方法,例如pageContext.getRequest()可以写为${pageContext.request)

el中的作用域  
      
pageContext(1)  当前页的pageContext对象  
pageScope   把page作用域中的数据映射为一个map对象  
requestScope(2)     把request作用域中的数据映射为一个map对象  
sessionScope    把session作用域中的数据映射为一个map对象  
applicationScope    把application作用域中的数据映射为一个map对象  
param   对应request.getParameter()  
paramValues(3)  对应request.getParameterValues()  
header(4)   对应request.getHeader()  
headerValues    对应request.getHeaderValues()  
cookie(5)   对应request.getCookies()  
initParam(6)    对应ServletContext.getInitParamter()

jsp的page pagecontext ;el的pageScope pagecontext 下面来说到一下他们的区别方便大家记忆

首先jsp内置对象的page可以直接忽略因为用的比较少。简单说一下它的用法

page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。

page对象的常用方法

比较常用的page内置对象的方法有:

getClass():返回当时Object的类。
hashCode():返回此Object的哈希代码。
toString():把此时的Object类转换成字符串。
equals(Object o):比较此对象是否和指定的对象是否相等。
copy(Object o):把此对象复制到指定的对象当中去。
clone():对此对象进行克隆。
由于page内置对象在实际开发过程并不经常使用,所以page对象的其他方法在这里就不一一列举出来了。

page的常用方法实例

下面举一个实例来加深对page内置对象使用的理解。创建一个page.jsp文件,其详细源代码如下:

 1 <%@ page language="java" contentType="text/html;charSet=GBK" %>
 2 <%@ page import="java.lang.Object" %>
 3 <html>
 4     <body>
 5         <center><h3>Page内置对象的实例</h3></center>
 6         <%!Object obj; %> <!-- 对象申明 -->
 7         getClass:<%=page.getClass() %>
 8         hashCode:<%=page.hashCode()%>
 9         toString:<%=page.toString()%>
10         equals:<%=page.equals(obj) %>
11         equlas2:<%=page.equals(this) %>
12     </body>
13 </html>

接着说一下jsp的pageContext 与el表达式的pageContext二者是同一对象!

el中pageContext可以获取JSP九大内置对象,相当于使用该对象调用getxxx()方法,例如pageContext.getRequest()可以写为${pageContext.request)

jsp的中Page域,request域,session域,application域都可以setAttribute与getAttribute。

jsp中可以使用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);

%>

接下来说

EL表达式中的pageScope

页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性

相当于可以取出page域中的数据

综上可以总结出

page与 pageContext 和pageScope无关

pageContext 对象可以访问所有域, scope(范围) 不写默认将数据放到page域

pageScope 访问page域
---------------------
作者:煦风云海
来源:CSDN
原文:https://blog.csdn.net/a327736051/article/details/79439703
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/mumu122GIS/p/10159932.html

转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别相关推荐

  1. Stream通过List里对象中某个属性最小来取该最小对象

    Stream通过List里对象中某个属性最小来取该最小对象 代码实现(Entity为实体) 代码实现(Entity为实体) List.stream().min(Comparator.comparing ...

  2. es6 对象中是否有键值_js/es6判断对象是否为空,并判断对象是否包含某个属性...

    js判断对象为空以及有好几种方法了,但是个人觉得不是特别方便. 比如: 1.把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 " {} " 2.for i ...

  3. 移除Java对象中的属性_移除/添加 JSON对象中的某个属性

    因为JSON完全是动态的,所以给一个JSON对象添加一个属性是很简单的,如: var json = {}; json.username='xtayfjpk'; 这样就为json对象添加了一个名为use ...

  4. html块级元素转换内联,HTML中的块级元素和内联元素

    1.特性 块级元素(block level element) 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示 宽度(width).高度(height).内边距(padding)和外 ...

  5. cad怎么将图层后置_CAD中如何将图形前置和后置吗? - CAD自学网

    如果图中都是线性图形且最终要单色打印,通常不用太理会图形的顺序.但如果实体填充且与其他图形有重叠,就需要设置图形的顺序了,有时我们在插入一些设备或构件时,为了图面更整洁,会在图块中添加区域覆盖WIPE ...

  6. cad怎么将图层后置_CAD中如何将图形前置和后置吗?

    如果图中都是线性图形且最终要单色打印,通常不用太理会图形的顺序.但如果实体填充且与其他图形有重叠,就需要设置图形的顺序了,有时我们在插入一些设备或构件时,为了图面更整洁,会在图块中添加区域覆盖WIPE ...

  7. JavaScript如何合并数组对象中key相同的数据(把数组对象某个属性相同的对象合并成一个新的数组)

    let resData = [{"name": "住院医疗最高报销","tagName": "医疗","ins ...

  8. 遍历聚合对象中的元素——迭代器模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/9992005 20世纪80年代,那时我家有一台"古老的"电视机,牌子我忘 ...

  9. 遍历聚合对象中的元素——迭代器模式(二)

    2 迭代器模式概述 在软件开发中,我们经常需要使用聚合对象来存储一系列数据.聚合对象拥有两个职责:一是存储数据:二是遍历数据.从依赖性来看,前者是聚合对象的基本职责:而后者既是可变化的,又是可分离的. ...

最新文章

  1. java国际化程序创建属性文件,Java程序国际化学习代码一
  2. Resharper 5.0 注册码
  3. SendMail与Postfix的架构备忘2
  4. SAP CRM系统里的附件存储逻辑
  5. oracle 用户禁止登录,[转] oracle限制用户在某个时间段内禁止登录数据库
  6. python findall_Python 正则表达式:findall
  7. google code jam 2008 Mousetrap (逆向)
  8. 慕课moocpython答案_中国大学慕课moocPython编程基础作业答案
  9. 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写
  10. Three.js - 光源使用详解1(环境光 AmbientLight、点光源 PointLint)
  11. 武汉星起航跨境:跨境电商新蓝海,南非跨境电商市场迸发活力
  12. Unity鼠标控制物体360°旋转和点击移动
  13. DAY 2 基础查询与排序
  14. Python多个数组合并(拼接)为一个数组
  15. redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wro
  16. Kindle进入日本
  17. ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析 转载
  18. 电路模型和电路定律(Ⅱ)
  19. linux按一下键盘出很多字母,为什么按一下键盘会打出很多字符?
  20. 数据分析--pandas

热门文章

  1. 告别win10,拥抱linux
  2. 【茗创科技】婴儿脑电机器学习实用指南
  3. 2021-07-16 yarn Total VCores allocated for Containers 与服务器上cpu核数不一致原因
  4. SAP-PM设备模块-维修执行-维修工单
  5. 安装北洋雷达驱动以及可能遇到的问题
  6. Chrome浏览器支持的时间格式
  7. 智慧树源码_公众号题库源码
  8. 微软的语音交互“滑铁卢”:Cortana小娜悲惨收场,未来路在何方?
  9. python 显示gif_PyQt5显示GIF图片的方法
  10. 什么是DBMS,什么是数据库?