原文地址:https://blog.csdn.net/qq_17045385/article/details/54799998

EL是JSP内置的表达式语言

JSP2.0开始,不让再使用Java脚本,而是使用EL表达式和动态标签来代替Java脚本

############EL替代的是<%=... %>,也就是说EL只能做输出###########

EL可以输出的东西都在11个内置对象中,11个内置对象,其中10个是Map,只有pageContext不是Map,它就是PageContext类型,EL所有内置对象如下:

pageScope:获取pageContext域属性,相当于pageContext.getAttribute("xxx")

requestScope:获取request域属性,相当于request.getAttribute("xxx")

sessionScope:获取session域属性,相当于session.getAttribute("xxx")

applicationScope:获取application域属性,相当于application.getAttribute("xxx")

param:对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数,相当于request.getParameter("xxx")

paramValues:对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues("xxx")

header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader("xxx")

headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders("xxx")

initParam:获取web.xml中<context-param>内的参数,${ initParam.xxx},xxx就是<param-name>标签内的值,进而得到<param-value>中的值

cookie:用于获取cookie,Map<String,Cookie>,其中key是cookie的name,value是cookie对象,例如${cookie.JSESSIONID.value }就是获取sessionId

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

      ######这也解释了 为什么要通过pageContext来获取其他 jsp 内置对象

EL表达式在获取Map的值或Bean的属性值是,可以使用“点”的方法,也可以使用“下标”的方法。

${initParam.a}与${initParam['a']},它们是完成的东西相同的。但是,如果Map的键或Bean的属性名中包含下划线或横岗时,那么就必须使用“下标”方法,例如:${initParam['a_a']}
---------------------
作者:星空dream
来源:CSDN
原文:https://blog.csdn.net/qq_17045385/article/details/54799998
版权声明:本文为博主原创文章,转载请附上博文链接!

Jsp内置对象为什么要通过pageContext获取

最佳(实际并不)回答中,网友评论中的回答:

烦恼收发室2017-06-06 22:06
request 和 pageContext 都是 JSP 的内置对象(9个对象),可在 JSP 脚本内部直接使用 EL 用来代替脚本,提供了11个内置对象。包含 pageContext,但是不包含 request pageContext 又可以获取其他8个对象,又可以代理其他域。 所以再 EL 表达式内,需要这样使用 btw,JSTL 是 EL 表达式的一种标签形式的扩展
 
如果是写JSP,其实在JSP页面中是不能有Java代码的,所有的Java代码都需要使用自定义标签来封装,因此,其实这些方法都是在自定义标签中使用,而在自定义标签中,我们就无法使用另外八大隐式对象了,只能使用pageContext,因此在自定义标签中必须利用pageContext来获取其他隐式对象。
 
另外参考:
这两篇还没好好看
 

转:EL表达式的11个内置对象的更多相关文章

  1. [转]【EL表达式】11个内置对象(用的少) & EL执行表达式

    1.EL的内置对象 其他不用记,红色记一下 代码: 2.EL执行表达式

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

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

  3. 四大域对象,和jsp的九大隐式对象,已经el表达式的11个隐式对象

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

  4. EL 11个内置对象

    JSP开发人员可以在EL表达式中使用EL隐式对象,而不用任何显式的编码或声明.语法如下: ${隐式对象名} <!-- 获取EL隐式对象的引用 --> 在JSP页面中,可以使用JSP脚本来  ...

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

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

  6. jsp内置对象和el表达式

    九个内置对象 *out jsp的输出流,用来向客户端响应 *page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this; *config 它对应真 ...

  7. day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

    day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...

  8. JSP学习 三大指令、九个内置对象、JavaBean、EL表达式

    1.page-->最复杂:<%@page language="java" info="xxx"...%> * pageEncoding和con ...

  9. Java EE JSP内置对象及表达式语言

    一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...

随机推荐

  1. 每日英语:The Right Way to Network

    With startup-themed conferences, hackathons, meet-ups and cocktail hours regularly taking place, ent ...

  2. 常见Python爬虫工具总结

    常见Python爬虫工具总结 前言 以前写爬虫都是用requests包,虽然很好用,不过还是要封装一些header啊什么的,也没有用过无头浏览器,今天偶然接触了一下. 原因是在处理一个错误的时候,用到 ...

  3. js实现cookie跨域功能

    /** * 设置cookie方法 * @param {string} name cookie键值 * @return {*} 返回cookie值 */ function setCookie_log(c ...

  4. 原生AJAX请求教程

    ajax 即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用.本质是在 HTTP 协议的基础上以异步的方式与服务器进行通信. 异 ...

  5. git命令之git clone用法

    在使用git来进行版本控制时,为了得一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s):/ ...

  6. Halcon 2D测量

    * This program shows how to detect the edges of a diamond * with subpixel accuracy and calculate the ...

  7. Java知多少(61)线程优先级

    线程优先级被线程调度用来判定何时每个线程允许运行.理论上,优先级高的线程比优先级低的线程获得更多的CPU时间.实际上,线程获得的CPU时间通常由包括优先级在内的多个因素决定(例如,一个实行多任务处理的 ...

  8. CLOS网络架构与FATTREE胖树拓扑

    FatTree拓扑结构是由MIT的Fares等人在改进传统树形结构性能的基础上提出的,属于switch-only型拓扑. 整个拓扑网络分为三个层次:自上而下分别为边缘层(edge).汇聚层(aggre ...

  9. 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点

    一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...

  10. python 守护进程,监控进程

    守护进程代码: import time, os import subprocess def run(): while True: taskList = os.popen('tasklist').rea ...