-
取值
不同版本的tomcat是否默认开启对EL表达式的支持是不一定的。所以为了 保证EL能正常使用,需要在<%@page标签里加上isELIgnored="false"。
在JSTL中输出:
<c:out value="${name}"/>
用EL:
${name}
-
作用域优先级
EL表达式可以从pageContext,request,session,application四个作用域中取到值,如果四个作用域属性都一样,EL会按照从高到低的优先级顺序获取。pageContext>request>session>application.
<c:set var = "name" value = "${'gareen-pageContext'}" scope="page"/>
<c:set var = "name" value = "${'gareen-request'}" scope="request"/>
<c:set var = "name" value = "${'gareen-session'}" scope="session"/>
<c:set var = "name" value = "${'gareen-application'}" scope="application"/>
${name}
-
JavaBean概念
javabean的标准:1.提供无参public的构造方法(默认提供);2.每个属性都有public的getter,setter;3.如果属性是boolean那么就对应is和setter方法。
EL获取JavaBean的属性,只需要通过.符号就可以了例如:${hero.name},就会调用getName方法。
<%
Hero hero = new Hero();
hero.setName("gailun");
hero.setHp(616);
request.setAttribute("hero",hero);
%>
英雄名字:${hero.name}<br>
英雄血量:${hero.hp}
-
结合JSTL的<c:forEach
<%
List<String> sub = new ArrayList<>();
sub.add("数学");
sub.add("语文");
sub.add("英语");
request.setAttribute("sub",sub);
%>
<table width="200px" align="center" border = "1" cellspacing="0">
<tr>
<td>编号</td>
<td>学科</td>
</tr>
<c:forEach items="${sub}" var = "hero" varStatus="st">
<tr>
<td>${st.count}</td>
<td>${hero}</td>
</tr>
</c:forEach>
</table>
-
取参
EL表达式还可以做到request.getParameter("name")这样的形式获取浏览器传递过来的参数。访问地址:http://127.0.0.1/test.jsp?name=abc
可以看到获取到了参数name.
//test.jsp
<%@ page language = "java" contentType ="text/html;charset=utf-8"
pageEncoding="utf-8" import = "java.util.*" isELIgnored="false"%>
${param.name}
-
条件判断
eq相等 ne,neq不相等
gt大于,lt小于
gte,ge小于等于
lte,le小于等于
not非,mod求模
is[not] div by 是否能被某数整除
is[not] even是否为偶数
is[not] odd是否为奇数
使用这个条件判断,大大简化了JSTL的c:if和c:choose代码:
<%
request.setAttribute("killNumber","10");
%>
c:if用法:
<c:if test="${killNumber>=10}">
超神
</c:if>
<c:if test="${killNumber<10}">
一般
</c:if>
<br>
c:choose用法:
<c:choose>
<c:when test="${killNumber>=10}">
超神
</c:when>
<c:otherwise>
一般
</c:otherwise>
</c:choose>
<br>
EL表达式eq的用法:
${killNumber ge 10?"超神":"一般"}