JSP--非常好用的EL表示式
阿新 • • 發佈:2018-12-15
-
取值
不同版本的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?"超神":"一般"}