什么是EL表达式?
EL(Expression Language)是为了使JSP写起来更加简单,它属于JSP技术。
EL表达式的作用
(1) 获取数据
语法:${标识符}
在JSP页面中使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果各个域对象中不存在标识符所对应的对象,则返回""(注意不是null)。
注意:
- 访问数组或List集合中的元素使用下标取值。
- 访问JavaBean的属性或Map集合中的元素使用“.”或者“[""]”取值。“[""]”可以处理一些不规则的标识符,如“-”。
(2) 执行运算
语法:${运算表达式}
EL表达式支持如下运算符:
- 算数运算符:+ - * / %
- 关系运算符: ==(eq) !=(ne) <(lt) >(gt) <=(le) >=(ge)
- 逻辑运算符:&&(and) ||(or) !(not)
- 三目运算符:表达式1?表达式2:表达式3
- empty运算符:判断对象是否为""或null
(3) 获取web开发常用对象
EL表达式中定义了11个隐式对象,使用这些隐含对象可以很方便地获取web开发常见对象,并读取这些对象的数据。
语法:${隐式对象}
隐含对象及其描述:
- pageContext:对应于JSP页面中的pageContext对象(注意:取的是pageContext对象)
- pageScope:代表page域中用于保存属性的Map对象
- requestScope:代表request域中用于保存属性的Map对象
- sessionScope:代表session域中用于保存属性的Map对象
- applicationScope:代表application域中用于保存属性的Map对象
- param:表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个String
- paramValues:表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个String[]
- header:表示一个保存了所有http请求头字段的Map对象,返回的是一个String
- headerValues:表示一个保存了所有http请求头字段的Map对象,返回的是一个String[]。
- cookie:表示一个保存了所有cookie的Map对象
- initParam:表示了一个保存了所有web应用初始化参数的Map对象(通过调用servletContext.getInitParameter(String name) 获得)
(4) 调用java方法
语法:${prefix: method(params)}
EL表达式允许开发人员开发自定义EL函数,以调用java类的方法。在EL表达式中调用的只能是Java类的静态方法且这个Java类的静态方法需要在TLD文件中描述。自定义EL函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能。