转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别
原文地址: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文件,其详细源代码如下:
<%@ page language="java" contentType="text/html;charSet=GBK" %>
<%@ page import="java.lang.Object" %>
<html>
<body>
<center><h3>Page内置对象的实例</h3></center>
<%!Object obj; %> <!-- 对象申明 -->
getClass:<%=page.getClass() %>
hashCode:<%=page.hashCode()%>
toString:<%=page.toString()%>
equals:<%=page.equals(obj) %>
equlas2:<%=page.equals(this) %>
</body>
</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
版权声明:本文为博主原创文章,转载请附上博文链接!
转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别的更多相关文章
- el语句 的 变量只能从域对象中获取 所以需要先添加到域对象
el语句 的 变量只能从域对象中获取 所以需要先添加到域对象
- c#判断两个对象和对象中的属性是否相同(以及记录对象中的哪些字段,和详细的改变情况)
当前项目需要记录变更记录,即用户在进行编辑后,将变更操作记录下来.但是数据没有发生变化,则不记录. 代码1:(仅仅返回是否变化的标识) /// <summary> /// 反射对比实体属性 ...
- 如何将数组2对象中的属性push进数组1的对象中去,组合成新的数组
- JSP与EL隐式对象
一,JSP隐式对象 隐式对象是可以直接使用的,无需声明.因为在JSP转译为servlet文件后,会自动声明其对象. 隐式对象① 说明 out 对应JspWriter对象,其内部关联一个PrintWri ...
- 设计模式系列之迭代器模式(Iterator Pattern)——遍历聚合对象中的元素
模式概述 模式定义 模式结构图 模式伪代码 模式改进 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修 ...
- vue中computed计算属性与methods对象中的this指针
this 指针问题 methods与computed中的this指针 应该指向的是它们自己,可是为什么this指针却可以访问data对象中的成员呢? 因为new Vue对象实例化后data中的成员和c ...
- JS对象中的原型
对象的原型:每个对象都连接一个原型对象,并且它可以从中继承属性.所有通过对象字面量创建的对象都连接到object.prototype.当你创建一个新对象时,你可以选择某个对象作为它的原型.原型连接在更 ...
- EL表达式隐含对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称} :获得对象的引用 <%@ page lang ...
- JSP内置对象——application,page,pageContext,config,Exception
application对象application对象实现了用户数据的共享,可存放全局变量.application开始于服务器的启动,终止于服务器的关闭.在用户的前后链接或不同用户之间的连接中,可以对a ...
随机推荐
- 【转】Error:JAVA_HOME is not set and could not be found
如果stop-dfs.sh也报了这个错,把$HADOOP_HOME/libexec/hadoop-config.sh中的如下内容之前加上 export JAVA_HOME=/home/lqr/Tool ...
- 【emWin】例程十二:FontCvt生成字库
介绍: 本例程介绍使用官方字库生成软件FontCvt5.22生成字库文件,并在液晶上显示文字. 实验指导书及代码包下载: 链接:http://pan.baidu.com/s/1eSkliDW 密码:o ...
- pyenv BUILD FAILED解决方法
在本机mac上安装pyenv安装成功后,用pyenv来安装python 3.5.0又出现了如下的问题: -> pyenv install 3.5.0 Downloading Python-3.5 ...
- AI金融知识自学偏量化方向-了解不同类型的机器学习2
有监督学习 vs 无监督学习 迭代和评估 偏差方差权衡 结合有监督学习和无监督学习(半监督学习)
- 【Python】socket模块应用
[Socket] 本文记录了一些socket模块的简单应用,对于具体原理还没来得及深究. ■ 利用socket模块进行端口连接验证和扫描 在linux中常用nc命令来进行远端端口是否开放的验证.但是这 ...
- 如何停止和禁用Linux系统中的不需要的服务
从Linux中删除不需要的服务 在本文中,我们将讨论一些您不需要的不需要的应用程序和服务,但它们是在操作系统安装期间默认安装的,并且不知不觉地开始吃您的系统资源. 让我们首先知道使用以下命令在系统上运 ...
- Linux监控平台介绍 zabbix监控介绍 安装zabbix 忘记Admin密码如何做
- 基于Java的数据采集(三)
<基于Java的数据采集(一)>:http://www.cnblogs.com/lichenwei/p/3904715.html <基于Java的数据采集(二)>:http:/ ...
- 织梦中在线显示pdf文件的方法
如何在织梦中添加pdf文件并显示呢?下面这个教程将带领大家来操作.(注:手机版无法查看) 第一步:在系统-系统基本参数-附件设置中添加pdf格式 并且将大小调大 第二步:在核心-内容模型-普通文章中添 ...
- Ubuntu中apt与apt-get命令的区别
https://blog.csdn.net/taotongning/article/details/82320472