Web基础了解版07-EL表达式-运算符-11个隐式对象
EL
EL(Expression Language)是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。
EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。
EL表达式出现的目的是为了使JSP写起来更加简单,让jsp的代码更佳简化。
EL表达式仅仅用来读取数据,而不能对数据进行修改。
使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。
EL表达式,它能够极大的简化JSP页面上数据的显示。他就是被用来优化数据读取操作的。
EL表达式的最主要功能就是从域对象中获取数据,并且输出
基本语法
EL表达式总是放在{}中,而且前边有一个$作为前缀
${标识符}
第一点:当EL表达式输出的key不存在的时候,输出的是空串””
第二点:EL表达式在域对象中搜索属性的顺序是pageContext,request,session,application
获取域中的对象可以直接使用对象名,这时按照从小到大的顺序依次向上查找。如获取域中名字为user的对象
${user}
获取对象的属性值可以直接通过“对象.属性名”
${user.name}
注意:这里的属性名是get和set方法对应的属性值,并不是对象中的变量名。
比如:如果获取name属性值,那么该对象中必定要存在一个getName()方法。
获取对象的属性也可以通过“对象[“属性名”]”
${user[“name”]}
获取Map中属性时可以直接通过属性的key
${map.key}
${map[key]}
在指定域中获取属性
在EL表达式中如果我们直接使用属性名如:${user},它将会在四个域中由小到大依次查找。顺序:pageScope、requestScope、sessionScope、applicationScope。
也可以指定从哪个域中获取:
${ pageScope .user}:当前页面
${requestScope.user}:当前请求
${sessionScope.user}:当前会话
${applicationScope.user}:当前应用
运算符
语法:${ 运算表达式 }
| 算数运算符 | 说 明 | 范 例 | 结果 |
|---|---|---|---|
| + | 加法 | ${ 12 + 18 } | 30 |
| - | 减法 | ${ 18 - 8 } | 10 |
| * | 乘法 | ${ 12 * 12 } | 144 |
| / 或div | 除法 | ${ 144 / 12 } 或 ${ 144 div 12 } | 12 |
| % 或mod | 取模 | ${ 144 % 10 } 或 ${ 144 mod 10 } | 4 |
| 关系运算符 | 说 明 | 范 例 | 结果 |
|---|---|---|---|
| == 或 eq | 等于 | ${ 5 == 5 } 或 ${ 5 eq 5 } | true |
| != 或 ne | 不等于 | ${ 5 !=5 } 或 ${ 5 ne 5 } | false |
| < 或 lt | 小于 | ${ 3 < 5 } 或 ${ 3 lt 5 } | true |
| > 或 gt | 大于 | ${ 2 > 10 } 或 ${ 2 gt 10 } | false |
| <= 或 le | 小于等于 | ${ 5 <= 12 } 或 ${ 5 le 12 } | true |
| >= 或 ge | 大于等于 | ${ 3 >= 5 } 或 ${ 3 ge 5 } | false |
| 逻辑运算符 | 说 明 | 范 例 | 结果 |
|---|---|---|---|
| && 或 and | 与运算 | ${ 12 == 12 && 12 < 11 } 或 ${ 12 == 12 and 12 < 11 } | false |
| || 或 or | 或运算 | ${ 12 == 12 || 12 < 11 } 或 ${ 12 == 12 or 12 < 11 } | true |
| ! 或 not | 取反运算 | ${ !true } 或 ${not true } | false |
empty运算符
empty运算是判断一个对象或者集合是否为空。返回boolean值。
对象为null时,返回true
如果是空的字符串,返回true
如果是空的Object数组(Object数组.length == 0),返回true
空的集合,返回true
空的map,返回true
三元运算符
${ 表达式1 ? 表达式2 : 表达式3 }
“.”和[]运算符
“.” 运算符,可以取JavaBean对象的属性值,也可以取map中某个key的值。
[] 中括号,可以获取顺序集合中指定索引的元素,也可以获取特殊key的值。
当我们在map对象中存放一些特殊的key的时候,比如说,key字符串中含有 “.” 、“+” 、“-” 、“*” 、“/” 、 “%” 等 这些运算符的时候,会让el解析器产生歧义的时候。我们可以使用[‘key’]中括号加引号包含key的形式取值。
[]中括号,可以获取有序集合(数组和List集合)中的给定索引的元素
11个隐含对象
这些对象可以在EL表达式中直接使用。
| 隐含对象 | 类型 | 说明 |
|---|---|---|
| pageContext | javax.servlet.jsp.PageContext | 就是JSP页面中的pageContext对象 |
| pageScope | java.util.Map<String,Object> | Page范围属性名和属性值 |
| requestScope | java.util.Map<String,Object> | Request范围属性名和属性值 |
| sessionScope | java.util.Map<String,Object> | Session范围属性名和属性值 |
| applicationScope | java.util.Map<String,Object> | Web应用范围属性名和属性值 |
| param | java.util.Map<String,String> | 对应一个请求参数 |
| paramValues | java.util.Map<String,String[]> | 对应一组请求参数 |
| header | java.util.Map<String,String> | 请求头 |
| headerValues | java.util.Map<String,String[]> | 请求头返回字符数组 |
| cookie | java.util.Map<String, Cookie> | 获取某个cookie对象 |
| initParam | java.util.Map<String, String> | 获取web.xml中<context-param>初始化参数 |
请求域
请求域主要用于获取域对象中的属性,四个对象分别对应四个请求域。
pageScope
requestScope
sessionScope
applicationScope
请求参数
参数对象主要用于获取get或post请求中的参数。
param:获取指定的请求参数, 如:${param.username},与jsp中request.getParameter()作用一致。
paramValues:获取请求参数数组,如:${paramValues.hobby}会返回一个string类型的数组
获取域数据的顺序
在执行时,会用标识符为关键字分别从page、request、session、application四个域中查找对应key的对象。找到则返回相应数据。找不到则返回空串。(注意,不是null,而是空字符串)
获取javaBean普通属性、数组属性、List集合属性,map属性中的数据
${ user.username } // 获取user对象中。username属性值
${ list[下标] } // 访问有序集合(或数组)中给定索引的元素
${ map.key } // 访问map集合中指定key的属性值
${ map[“key”] } // 访问特殊字符串的key的属性值
一定要记住一点,EL表达式获取数据的时候,是通过对应的get方法获取的 BeanUtils 是通过set方法设置值
pageContext访问Jsp中内置对象
通过pageContext对象我们可以直接获取jsp中的一些内置对象,比如:request对象,session对象,Servletconfig对象,ServletContext对象,然后获取一些我们需要的信息。
常用的功能获取
协议
服务器ip
服务器端口
获取工程路径
获取请求方法
获取客户端ip地址
获取会话的id编号
工程名(上下文路径):${ pageContext.request.contextPath }
但是在实际项目中为了缩短代码量,会把request对象放在pageContext域对象中。然后再使用。比如
<%
// 先把request对象放到pageContext域对象中
pageContext.setAttribute(“req”,request);
%>
//然后EL表达式代码改为
工程名(上下文路径):${ req.contextPath }
其他隐含对象
<body>
参数username的值:${ param.username }<br/>
参数hobby的值:${ paramValues.hobby[0] }<br/>
请求头Accept-Language的值:${ header["Accept-Language"] }<br/>
请求头Accept的值:${ headerValues["Accept"][0] }<br/>
cookie的key = ${ cookie.JSESSIONID.name } : value = ${ cookie.JSESSIONID.value } <br/>
上下文参数:${ initParam.username }<br/>
</body>
Web基础了解版07-EL表达式-运算符-11个隐式对象的更多相关文章
- 四大域对象,和jsp的九大隐式对象,已经el表达式的11个隐式对象
四大域对象 1.PageContext :页面范围的数据 2.ServletRequest:请求范围的数据 3.HttpSession:回话范围的数据 4.ServletContext:应用范围的数据 ...
- EL表达式中的11个隐式对象
EL表达式中定义了11个隐式对象,使用这些隐式对象可以很方便地读取到Cookie.HTTP请求消息头字段.请求参数.Web应用程序中的初始化参数的信息,EL表达式中的隐式对象具体如下: 隐式对象 作用 ...
- 转:EL表达式的11个内置对象
原文地址:https://blog.csdn.net/qq_17045385/article/details/54799998 EL是JSP内置的表达式语言 JSP2.0开始,不让再使用Java脚本, ...
- [转]【EL表达式】11个内置对象(用的少) & EL执行表达式
1.EL的内置对象 其他不用记,红色记一下 代码: 2.EL执行表达式
- JSP 4个域对象-9个内置对象-11个EL隐式对象
一. 四大域对象 1. PageContext :页面范围的数据 2. ServletRequest:请求范围的数据 3. HttpSession:会话范围的数据 4. ServletContext: ...
- java web学习总结(三十一) -------------------EL表达式
一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...
- EL表达式运算符
语法:${运算表达式},EL表达式支持如下运算符 1.empty运算符:检查对象是否为null或“空”. 2.二元表达式:${user!=null?user.name : “”} . 3.[ ] 和 ...
- Web基础了解版06-Jsp
Jsp Jsp全称Java Server Pages,也就是在我们JavaWeb中的动态页面. Jsp能够以HTML页面的方式呈现数据,是一个可以嵌入Java代码的HTML. Jsp其本质就是一个Se ...
- JSP——JavaServer Page中的隐式对象(implicit object)、指令(directive)、脚本元素(scripting element)、动作(action)、EL表达式
目录 1.JSP概述 2.注释(comment) 2.1.JSP注释 2.2.HTML注释 3.隐式对象(implicit object) 3.1.隐式对象清单 3.2.request对象 3.3.o ...
随机推荐
- python面试的100题(12)
25.求出列表所有奇数并构造新列表 a=[1,2,3,4,5,6,7,8,9,10] res=[i for i in a if i%2==1] print(res) 结果为:[1, 3, 5, 7, ...
- 《TCP/IP入门经典》摘录--Part 2
TCP/IP协议系统 1.网络访问层 网卡(network adapter),即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由 ...
- codeforces 1283D. Christmas Trees(bfs)
链接: https://codeforces.com/contest/1283/problem/D 题意:给定n个不同的整数点,让你找m个不同的整数点,使得这m个点到到这n个点最小距离之和最小. 思路 ...
- MonkeyRunner Mac环境 录制脚本和回放 批量回放
1.MonkeyRunner是AndroidSDK自带的一个东西,在SDK目录中的tools\bin文件夹中 2.配置环境变量 编辑环境变量:打开终端输入:open ~/.bash_profile 将 ...
- CentOS7下MariaDB数据库安装及配置
前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存 ...
- blur()低通滤波
blur()函数可以用标准化的盒式过滤器来平滑图像. C++ API: 相关官网资料: https://docs.opencv.org/3.4.1/d4/d86/group__imgproc__fil ...
- HTML的创建
创建一个HTML 直到产生scr文件之前的创建和原来建Java项目一样. 把scr文件Delete. 创建HTML File 4. 设置浏览器(我用的是搜狗浏览器,所以先找到搜狗的exe文件位置,导入 ...
- [人物存档]【AI少女】【捏脸数据】人物鉴赏190
AISChaF_20200201011129905.png AISChaF_20200123004135233.png
- 516,base64的原理及优缺点
优点是可以加密,减少了http请求 缺点是需要消耗cpu进行编解码 适用于小图片 base的体积约为原图的4/3
- hdu1695(莫比乌斯反演+容斥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目是求 在区间[a,b]选一个数x,区间[c,d]选一个数y,求满足gcd(x,y) = k ...