web开发:EL表达式是什么?编程时怎么和jsp页面交互?用在哪里?

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

${map.aaa.name}获取map集合的对象的键为aaa的person的name属性${map['111'].name }当键为数字的时候就不可以${map.111.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内置对象

获取当前web应用的名称$(pageContext.request.contextPath) 结果式/web应用名称用处 pageContext在jsp中为默认的上下文对象,可以获取到八大对象,然后通过它获取到request,然后获取web应用的路径

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对象是否为空