javael表达式ifelse_Java精选笔记_EL表达式
EL表达式
初始EL
EL是⼀种可以简化JSP页⾯的表达式,EL表达式的语法⾮常简单都是以“${”符号开始,以“}”符号结束的
el表达式获取session中的值EL表达式是⼀种简单的数据“访问”语⾔,只能读,不能写。需要写在JSP页⾯上
EL能实现对pageContext对象、session对象、request对象等存储对象的简化访问,能够简洁地访问请求参数、Cookie和其他请求数据,即EL可以很⽅便地访问⼤多数JSP内置的隐含对象,从⽽简化编程。
EL还可以简化对JavaBean属性和集合元素的访问。
需要注意的是,“${表达式}”中的表达式必须符合EL语法要求。最终会被翻译成⼀段JAVA代码
⼤多数Java Web服务器都是默认⽀持EL的。对于单个JSP页⾯,可以使⽤page指令来设置JSP页⾯是否⽀持EL。
JSP页⾯默认⽀持EL,如果不⽀持的话,我们可以通过设置page指令的isELIgnored属性为false,来实
现对EL的⽀持。如:
⽽对于整个JSP应⽤,要修改Web应⽤的l配置⽂件来设置是否⽀持EL。如果要使整个JSP应⽤都⽀持EL,则设置元素的⼦元素的值为false。
EL语法
语法
${beanName.propertyName}
${beanName["propertyName"]}
EL中的标识符
不能以数字开头
不能是EL中的保留字,如and、or、gt
不能是EL隐式对象,如pageContext
不能包含单引号(')、双引号(")、减号(-)和正斜线等特殊字符。
EL中的保留字
and、eq、gt、true、instanceof、or、ne、ne、le、false、empty、not、it、ge、null、div、mod
保留字是编程语⾔⾥事先定义好并赋予了特殊含义的单词,和其它语⾔⼀样,EL表达式中也定义了许多保留字
EL中的变量
EL表达式中的变量就是⼀个基本的存储单元,EL表达式可以将变量映射到⼀个对象上
${product} product就是⼀个变量,不⽤事先定义就可以直接使⽤。例如表达式${product}就可以访问变量product的值
EL中的常量
EL表达式中的常量⼜称字⾯量,它是不能改变的数据。在EL表达式中包含多种常量。
布尔常量
⽤于区分⼀个事物的正反两⾯,它的值只有两个,分别是true和false。
整型常量
取值范围是Java语⾔中定义的常量Long.MIN_VALUE和Long.MAX_VALUE之间,即(-2)63~263-1之间的整数。
浮点数常量
取值范围是Java语⾔中定义的常Double.MIN_VALUE到Double.MAX_VALUE之间,即4.9E-324~1.8E308之间的整数。
字符串常量
是⽤单引号或双引号引起来的⼀连串字符
Null常量
Null常量⽤于表⽰变量引⽤的对象为空,它只有⼀个值,⽤null表⽰。
EL中的运⾏符
算术运算符
+ - * /或div %或mod
关系(⽐较)运算符
⽤于⽐较两个操作数的⼤⼩,操作数可以是各种常量、EL变量或EL表达式
==或eq、!=或ne、>或gt、=或ge、<=或le
逻辑运算符
⽤于对结果为布尔类型的表达式进⾏运算
and 或 &&
or 或 ||
not 或 !
点运算符.
⽤于访问JSP页⾯中某些对象的属性,如JavaBean对象、List对象、Array对象等。如:${customer.name}
⽅括号运算符[]
⽤于访问JSP页⾯中某些对象的属性,当获取的属性名中包含⼀些特殊符号,如“-”或“?”等并⾮字母或数字的符号,就只能使⽤⽅括号运算符来访问该属性
${user["My-Name"]}
.与[]互换 如:${student.name}等价于${student["name"]}
.与[]结合使⽤ 表达式${users[0].userName}可以访问集合或数组中的第⼀个元素的userName属性。
⽅括号运算符还可以访问List集合或数组中指定索引的某个元素,如表达式${users[0]}⽤于访问集合或数组中第⼀个元素。在这种情况下,只能使⽤⽅括号运算符,⽽不能使⽤点运算符。
条件运算符
⽤于执⾏某种条件判断,它类似于Java语⾔中的if-else语句
${A?B:C}
empty运算符
⽤于判断某个对象是否为null或””
${empty var}
如果对象为空,返回true,如果不为空,返回false
下列情况返回true
var变量不存在,即没有定义,例如表达式${empty name},如果不存在name变量,就返回true。
var变量的值为null,例如表达式${empty customer.name},如果customer.name的值为null,就返回true。var变量引⽤集合(Set、Map和List)类型对象,并且在集合对象中不包含任何元素。
如果对象为null或者对象时长度为0的字符串或者对象是⼀个空容器/空数组都返回true
取出作⽤域⾥的数据
字符串直接⽤
数组需要加  下标    ${user[0]}
map    需要使⽤key
写法⼀:${user.key1}简易⽅式,key决不能有特殊字符,否则取不出来
写法⼆:${msg["key1"]}    建议使⽤这种⽅式,因为即使key有特殊字符,也可以正常⽤
map在JavaWeb中可以理解为⼀个特殊的JavaBean。key=javaBean属性,value=javaBean属性值JavaBean取值
写法⼀:${user.name}简易⽅式,属性名决不能有特殊字符,否则取不出来
写法⼆:${user["name"]}    建议使⽤这种⽅式,因为即使属性名有特殊字符,也可以正常⽤
${user.name} :调⽤  user对象的 getName⽅法
在EL表达式中获取⾃定义属性,必须在JavaBean中⾃定义getXxx⽅法
例如:${user.username}  在msg5中设置getUsername⽅法。
注意:1、⽅法要有返回值才能打印;
2、⽅法修饰符建议⼀定是public
3、⽅法不能有参数
EL隐式对象
pageContext对象
对应于JSP页⾯中的pageContext对象
${sponse.characterEncoding}
可以⽤来访问JSP其他10个内置对象
请求参数
param
获取请求参数的某个值,它是Map类型,与Parameter()⽅法相同
表⽰⼀个保存了所有请求参数的Map对象
在使⽤EL获取参数时,如果参数不存在,返回的是空字符串,⽽不是null
${param.num}
paramValues
获取请求参数的所有值
表⽰⼀个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是⼀个string类型数组
获取某个请求参数的第⼀个值: ${paramValues.nums[0]}
请求头
header
获取请求头字段的某个值。如: ${header["user-agent"]}
表⽰⼀个保存了所有http请求头字段的Map对象
headerValues
获取请求头字段的多个值
表⽰⼀个保存了所有http请求头字段的Map对象,返回string类型数组
获取某个请求头字段的第⼀个值:${headerValues["Accept-Language"][0]}
Cookie对象
获取当前请求所有Cookie,该对象是⼀个代表所有Cookie信息的Map集合
Map集合中元素的关键字为各个Cookie的名称,值则为对应的Cookie对象
获取cookie对象的信息:${cookie.userName}
获取cookie对象的名称:${cookie.userName.name}
获取cookie对象的值:${cookie.userName.value}
初始化参数
initParam
获取上下⽂参数
表⽰⼀个保存了所有web应⽤初始化参数的map对象
获取Web应⽤程序中全局初始化参数:${unt}
作⽤域
HttpRequest对象存储的数据只在当前请求中可以获取到。习惯性的,我们把这些Map集合称为域,这些Map集合所在的对象称为域对象。
pageScope
代表page域中⽤于保存属性的Map对象
${pageScope.userName}
requestScope
映射请求范围的变量名到其值
sessionScope
applicationScope
⾃定义EL函数
HTML注⼊
在JSP开发中,经常会提交⼀些包含“<”、“>”等特殊HTML字符的数据,如果程序不对这些特殊字符进⾏转换,浏览器将把这些特殊字符当做HTML标签进⾏解释执⾏,这就是所谓的“HTML注⼊”。
函数必须采⽤public类中的public static⽅法编写并要映射到TLD标签库⽂件中
语法:ns:func(a1,a2,....)配置
实现⽆脚本的JSP页⾯
--/
关闭EL
--/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。