EL+JSTL簡單學習

雖然說JSP不推薦學,但作爲了解,還是總結一丟丟。

EL Expression Language

基本形式:${el表達式}

獲取數據

只能獲取域中的數據,不能設置只能獲取,不能遍歷。

【獲取常量】

​ 支持獲取數字,字符串,布爾類型的常量。

【域中自動搜尋獲取變量】

​ 自動搜尋域,獲取變量,在四大作用域中由小到大的順序搜尋指定名稱的屬性。

​ 如果搜尋到,直接獲取並返回,如果沒有就返回一個空字符串。

【指定域獲取變量】

​ 可以直接使用如下四個內置對象操縱指定域:

${pageScope.name }
${requestScope.name }
${sessionScope.name }
${applicationScope.name }

【獲取數組】

數據必須要在某一個域中,纔可以獲取

<% 
String names [] = {"summerday","天喬巴夏","小丸子","littleW"};
pageContext.setAttribute("names", names);
%>
${names[3] }

【獲取集合】

和數組類似。

<%
List<String> list = new ArrayList<String>();
list.add("天喬巴夏");
list.add("summerday");
pageContext.setAttribute("list", list);
%>
${list[0] }

【獲取map】

<%
Map<String,String> map = new HashMap<String,String>
();
map.put("name","天喬巴夏");
map.put("gender","男");
map.put("age",18)
pageContext.setAttribute("map", map);
%>
${map["name"] }
${map.gender }

【獲取對象】

<%
Person p = new Person("summerday",19);
pageContext.setAttribute("p", p);
%>
${p.name }
${p["age"] }

執行運算

【算術運算】【關係運算】【邏輯運算】【三元表達式】

【Empty運算】

  • 如果對象爲null,字符串爲空
  • 集合沒有任何元素返回true
<%
String name = "summerday";
pageContext.setAttribute("name", name);
String addr = "";
pageContext.setAttribute("addr",addr);
List<String> list = new ArrayList<String>();
pageContext.setAttribute("list",list);
%>
${empty name}<%--false--%>
${empty addr}<%--true--%>
${empty list}<%--true--%>

內置對象

【作用域】pageScope、requestScope、sessionScope、ApplicationScope

【請求參數】:param、paramValues

【web應用初始化參數】:initParam

【請求頭】:header、headerValues

【所有cookie組成的Map】:cookie

【當前頁面的對象】:pageContext

jstl標籤技術

JavaServerPages Standard Tag Library

可以和 EL 配合來取代傳統直接在頁面上嵌入 Java 程序(Scripting)的做法,以提高程序可讀性、維護性和方便性。

引入jstl

<%@taglib uri="" prefix=""%>

jstl標籤庫的子庫

核心標籤庫:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

jstl常用標籤

set【設置+修改】

        <c:set var="name" value="天喬巴夏" scope="request"></c:set>
        ${name}
        <c:set var="name" value="summerday"></c:set>
        ${name}

remove【移除】

        <c:set var="num" scope="session" value="${10}"/>
        <p>num: <c:out value="${num}"/></p>
        <c:remove var="num"/>
        <p>刪除num後: <c:out value="${num}"/></p>

if【判斷】

        <c:set var="age" value="18" scope="request"></c:set>
        <c:if test="${age==18}" var="flag">
            yes
        </c:if>
        <c:if test="${age!=18}">
            no
        </c:if>
        ${flag}  <%--true--%>

catch【捕獲異常】

        <c:catch var="e">
            <%
                int i = 1/0;
            %>
        </c:catch>
        ${e}<%--java.lang.ArithmeticException: / by zero--%>

choose【多條件判斷】

        <c:set var="num" value="18" scope="request" ></c:set>
        <c:choose>
            <c:when test="${num<10}">num<10</c:when>
            <c:when test="${num<20}">num<20,num>=10</c:when>
            <c:otherwise>num>=20</c:otherwise>
        </c:choose>

forTokens【切割】

        <c:forTokens items="www.baidu.com" delims="." var="domains">
        <c:out value="${domains}"/><p>
        </c:forTokens>

forEach【遍歷】

	<%--varStatus存儲屬性,count屬性從1開始計數--%>    
	<c:forEach begin="1" end="10" step="1" var="i" varStatus="stat">
    <c:if test="${stat.count % 2 == 0 }">
        <font color="red">${i }</font>
    </c:if>
    <c:if test="${stat.count % 2 != 0 }">
        <font color="blue">${i }</font>
    </c:if>
    </c:forEach>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章