EL 表达式
EL 表达式的全称是:Expression Language 是表达式语言
EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。
格式:${表达式}
EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。
<body>
<%
request.setAttribute("key", "value");
%>
使用表达式脚本获取 key 的值:<%=request.getAttribute("key")%> <br>
使用 EL 表达式获取 key 的值:${key} <br>
使用表达式脚本获取 key1 的值:<%=request.getAttribute("key1")%> <br>
使用 EL 表达式获取 key1 的值:${key1} <br>
</body>
网页输出效果:
使用表达式脚本获取 key 的值:value
使用 EL 表达式获取 key 的值:value
使用表达式脚本获取 key1 的值:null
使用 EL 表达式获取 key1 的值:
EL 表达式搜索域数据的顺序
EL 表达式主要是在 jsp 页面中输出数据
主要是输出域对象中的数据
当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出
EL 表达式输出复杂对象
首先创建一个JavaBean类,增加一些属性、构造器、get 和 set 方法、toString 方法:
在 jsp 页面的代码脚本中创建对象及其赋一些值:
使用 EL 表达式获取此对象的属性:
${域对象的key.属性[下标]|.map的key
目前以上输出的都是类对象中存在的属性并且有 get 方法的,若访问不存在的属性或者存在属性但是没有对应的 get 方法的属性:
修改 JavaBean 类,不添加新的属性但是添加一个 getAge 方法:
在 EL 表达式中输出 age 属性:
就会发现 EL 表达式可以获取 JavaBean 中没有对应的属性但是存在对应的 get 方法的属性(一般没人会闲的蛋疼平白无故的增加这种 get 方法)
EL 表达式运算
关系运算
逻辑运算
算术运算
empty 运算
empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false
- 值为 null
- 字符串为空串 “”
- 数组长度为 0
- List 集合长度为 0
- Map 集合长度为 0
三元运算
表达式1?表达式2:表达式3
. 点运算和 [] 中括号运算
. 点运算,可以输出 Bean 对象中某个属性的值
[] 中括号运算,可以输出有序集合中某个元素的值
并且 [] 中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值
在 jsp 页面中:
浏览器输出效果:
EL 表达式的 11 个隐含对象
EL 表达式中 11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用
- PageContextImpl pageContext
它可以获取 jsp 中的九大内置对象 - Map<String, Object> pageScope
它可以获取 pageContext 域中的数据 - Map<String, Objcet> requestScope
它可以获取 Request 域中的数据 - Map<String, Object> sessionScope
它可以获取 Session 域中的数据 - Map<String, Object> applicationScope
它可以获取 ServletContext 域中的数据 - Map<String, String> param
它可以获取请求参数的值 - Map<String, String[]> paramValues
它也是用来获取请求参数,常用来获取多个值 - Map<String, String> header
它可以获取请求头的信息 - Map<String, String[]> headerValues
它也是用来获取请求头参数信息的,也是常用来获取多个值 - Map<String, Cookie> cookie
它可以获取当前请求的 Cookie 信息 - Map<String, String> initParam
它可以获取在 web.xml 中配置的 标签中的上下文参数
四个域对象
浏览器显示效果:
pageContext 对象
浏览器显示:
param对象
param 对象主要用来获取地址栏中的请求参数的值
在浏览器地址栏后添加任意请求参数,浏览器显示:
header对象
header 对象主要用来获取请求头中的参数信息
浏览器显示: