(尚硅谷)javaweb学习笔记-------EL表达式部分

EL表达式

什么是EL表达式,EL表达式的作用?

EL表达式的全称是:Expression Language,是表达式语言。

EL表达式的作用:EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据输出。

因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多。

它们都能把值输出出来。

当我们输入空值的时候:

我们发现EL表达式的结果更好懂。

 如果想要jsp表达式脚本达到同样的效果:

 EL表达式的格式是:${表达式}

EL表达式在输出null值的时候,输出的是空串。jsp表达式脚本在输出null值的时候,输出的是null字符串。

EL表达式搜索域数据的顺序

EL表达式主要是在Jsp页面中输出数据。

主要是输出域对象中的数据。

当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出:

pageContext request session application

EL表达式输出Bean的普通属性,数组属性。List集合属性,map集合属性

1.要求一一输出Person类中普通属性。数组属性。List集合属性和map属性。

(1)建立实体类

在实体类中加上无参构造方法,有参构造方法,set,get方法,toString()方法。

 jsp页面:

 运行结果:

 我们发现我们可以把对象的信息打印出来。

类对象属性的输出:

 对于数组属性值直接p.phones打印出的是地址。

 如果我们只想输出集合中的某一个元素:

 

 

 

 

 注:

我们在实体类中添加一个属性:

 在jsp页面中:

 

我们发现报错了,原因是什么呢?

当我们加上get方法后:

再次运行:

 成功运行出结果。

如果我们去掉属性,只写get方法呢?

再次运行:

 仍能正确输出。

于是通过这几次试验,我们得出结论:

在EL表达式中${p.属性名}找到的是对应属性的get方法。

EL表达式-------------------运算

语法:${运算表达式},EL表达式支持如下运算符:

 

 empty运算

empty运算可以判断一个数据是否为空,如果为空,则输出true,不为空输出false.

一下几种情况为空:

1.值为null值的时候,为空

2.值为空串的时候,为空

3.值是Object类型数组,长度为零的时候

4.list集合,元素个数为零

5.map集合,元素个数为零

 

 三元运算

表达式1?表达式2:表达式3

如果表达式1的值为真,返回表达式2的值,如果表达式1的值为假,返回表达式3的值

 

 “.”点运算和[]中括号运算符

点运算,可以输出Bean对象中某个属性的值。

[]中括号运算,可以输出有序集合中某个元素的值。

并且[]中括号运算,还可以输出map集合中key里含有特殊字符的key的值。

 对于这样的含有特殊字符的Key

如果我们直接打印值:

 

我们发现并不能打印出值。

所以这时候我们就要用到[]中括号运算符了:

 

 

 

EL表达式的11个隐含对象

EL表达式中11个隐含对象,是EL表达式中自己定义的,可以直接使用。

变量                        类型                        作用

pageContext           PageContextImol    它可以获取Jsp中的九大内置对象

pageScope              Map<String,Object>         它可以获取pageContext域中的数据

requestScope          Map<String,Object>        它可以获取Request域中的数据

sessionScope        Map<String,Object>        它可以获取Session域中的数据

applicationScope        Map<String,Object>        它可以获取ServletContext域中的数据

param                        Map<String,String>        它可以获取请求参数的值

paramValues                Map<String,String[]>        它可以获取请求参数的值,获取多个值的时候使用。

header                        Map<String,String>                它可以获取请求头的信息

headerValues                Map<String,String[]>            它可以获取请求头的信息,它可以获取多个值的情况

cookie                        Map<String,Cookie>                它可以获取当前请求的Cookie信息

 intparam                        Map<String,String>                它可以获取在web.xml中配置的<context-param>上下文参数

EL获取四个特定域中的属性

pageScope        ======        pageContext域

requestScope        ====        Request域

sessionScope        ====        Session域

applicationScope        ==        ServletContext域

例:

不同的域对象的key都是key2

如果我们这时用之前的{key2}一定会获取的是范围最小的pageContext2。

所以我们要用到特定属性:

 

 

其它特定属性同理。

 pageContext演示

 

 

 

但是我们会发现这时用EL表达式的代码要比jsp的表达式脚本还要长,这不符合简洁的要求。

所以在企业开发中,我们会这么写:

 EL表达式其他隐含对象的使用

param                        Map<String,String>        它可以获取请求参数的值

paramValues                Map<String,String[]>        它可以获取请求参数的值,获取多个值的时候使用。

header                        Map<String,String>                它可以获取请求头的信息

headerValues                Map<String,String[]>            它可以获取请求头的信息,它可以获取多个值的情况

cookie                        Map<String,Cookie>                它可以获取当前请求的Cookie信息

 intparam                        Map<String,String>                它可以获取在web.xml中配置的<context-param>上下文参数

param:

 

我们输出的是{}。为什么没有值呢?因为param是获取请求的参数,现在没有参数当然获取不到任何值啦。

当然我们也可以分别输出属性值:

 

 paramValues:

 

 对于数组也可以遍历,会用到下一个知识点jstl来遍历。

header:

 

这就是请求头信息。

 

 

headerValues:

 cookie:

 

 

 

 

 initParam:

先在web.xml中配置:

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值