EL表达式可以嵌入在jsp页面内部,减少jsp脚本(Java代码)的编写,EL 出现的目的是要替代jsp页面中脚本的编写。
EL表达式用于获取数据,在jsp页面中可以使用${标识符}的形式通知jsp引擎调用page.findAttribute()方法,以标识符为关键字从各个领域对象中获取,依次从pageContext域,request域,session域,application域中获取,如果所有域中不存在标识符所对应的对象,则返回" "。
假如我们向域中存储一个字符串String str="222",request.setAttribute("str",str);,那么我们用el取出,${str},那么取出的str为222,我们通过ei获取的数据都是不带任何引号的,所以要是有些地方需要用带有引号的需要引起来,而且ei语言可以在jsp页面用在任何地方我们使用,使用它的时候就把他当成一个数字就OK了,还有getParameter获取参数返回类型都是String使用方法举例
${data};获取键为data的值
${p.name};获取键为p的name属性,不用getname,省略get
这个是person的成员变量为Address属性,Address也是类,他的属性为city
${p1.address.city}获取p1对象的address属性的city属性
${list[1].name}获取list集合中的第一个对象的name
总之就是el表达式在取数据的时候通常用.号,如果.号取不出来,用【】
${标识符}依次从pageContext域,request域,session域,application域中获取标识符相对的数据
那么可以指定从哪个域获取吗?可以在获取数据之前指定从哪个域获取
EL获得pageContext域中的值:$(pageContextScope.key);EL获得request域中的值:$(requestScope.key);EL获得session域中的值:$(sessionScope.key);EL获得application域中的值:$(applicationScope.key);注意requestSocpe是el的内置对象,和jsp的内置对象request并不是一个东西,request写入的数据会写入request域,在使用$(requestScope.key)可以专门获取到request域的数据
EL内置对象
jsp中有内置对象,el中也有内置对象,也有就是我们获取数据有两种实现形式,一个是写在标签中通过jsp的内置对象来操作(在这里写的时候就按照正常Java来写就ok),还有一种形式是通过el对象来操作,举例:
一个是通过jsp内置对象request获取username的数据,还有一个是直接通过param参数对象获取数据,这两种方式均可以,而el的出现就是为了减少jsp中java代码的量
${header["user-Agent"]}(获取请求头,因为user-Agent有个-所以不用.连接而是通过【】括起来)
${initparam.aaa}获取全局参数aaa(配置文件中)
${cookie.name1.value}cookie。name为获取name1的cookie对象再。cookie就是name=name1的cookie的值了
el执行表达式
结果2,true,false
empty为判断list对象是否为空