EL表达式是用“${}”括起来的脚本,用来更方便的读取对象。
EL表达式写在JSP的HTML代码中,而不能写在“<%”与“%>”引起来的JSP脚本中。
一、EL表达式
1、EL表达式提供了获取对象以及属性的简单方法。
某些情况下EL表达式完全可以替代JSP脚本或者JSP行为。
<jsp:useBean id=”person” class=”Person”></jsp:useBean>
<!--使用useBean行为将Person对象放置到request中-->
<body>
欢迎您,${person}。
<!--相当于request.getAttribute(“person”)或session.getAttribut(“person”)-->
您的年龄为${person.age},<!--相当于person.getAge()-->
<!--也相当于<jsp:getProperty name=”person” property=”age”/>-->
您的性别为${person.sex}。<!--相当于person.getSex()-->
<!--也相当于<jsp:getProperty name=”person” property=”sex”/>-->
</body>
2、如果对象的属性为另一个Java Bean,EL表达式也可以输出该Java Bean的属性。
您所在的国家是:${person.city.province.country}
<!--相当于person.getCity().getProvince().getCountry()-->
<%--也相当于<jsp:getProperty name=”person” property=”city.province.country”/>-->
3、提示
旧版本的Servlet规范不支持EL表达式。例如Tomcat4.x以及以前的版本都不支持EL表达式。
二、隐藏对象
1、EL表达式不仅可以读取request、session中的属性,还可以读取其他JSP隐藏对象的属性
${param.foo}<!--读取地址栏参数,相当于request.getParameter(“foo”)-->
${initParam.foo}<!--读取初始化参数,相当于config.getInitParameter(“foo”)-->
${header.host}<!--读取head参数,相当于request.getHeader(“host”)-->
2、param、initParam、header均返回Map类型对象。对于放置在Map里的对象,还可以用数组的形式获取到。
${param[“foo”]}<!--相当于${param.foo}-->
${initParam[“foo”]}<!--相当于${initParam.foo}-->
${header[“host”]}<!--相当于${header.host}-->
3、EL表达式中的隐藏对象
A、请求参数
a、 param
b、 paramValues
B、头信息
a、 header
b、 headerValues
C、cookie
a、cookie
D、初始化参数
a、 initParam
E、作用域
a、 pageScope
b、 requestScope
c、 sessionScope
d、 applicationScope
e、 pageContext
三、EL表达式运算
1、简单的运算
加(+)、减(-)、乘(*)、除(/或div)、取余(%或mod)、三目运算符(exp?val1:val2)等。
2、简单的比较运算
大于(>或gt)、小于(<或lt)、等于(==或eq)、不等于(!=或ne)、大于等于(>=或ge)、小于等于(<=或le)
3、多个比较运算
&&或and、||或or、!或not
4、字符比较
如果为大于等于操作EL表达式会调用int compare(char ss)方法完成比较,
等于操作时会调用equals()方法来完成比较。
5、对于Map或者数组类,还一是用[]取值,或者是用empty判断是否为空。