1. 程式人生 > >JSP--非常好用的EL表示式

JSP--非常好用的EL表示式

  • 取值

不同版本的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?"超神":"一般"}