2018藍旭暑期培訓之JSTL、EL表達式

前言:由於通常情況下jstl和el表達式配合使用,因此將jstl和EL表達式放在一起講解

一.jstl和EL定義

jstl即JavaServer Pages Standard Tag Library,JSP標準標籤庫。

表達式語言(EL)是 JSP 2.0 引入的一種計算和輸出 Java 對象的簡單語言。

二.爲什麼使用jstl和EL表達式

其實不使用jstl和el表達式也可以實現相應的功能,但是如果不使用的話就需要寫大量java程序到jsp中,這使得jsp異常的複雜,令人抓狂。因此使用jstl和el表達式可以使得jsp代碼變得簡潔美觀,使得代碼維護起來更加容易。

三.如何使用EL表達式?

1.配置el表達式

(1)導入standard.jar

(2)在需要使用 EL 語音的頁面加上<%@ page isELIgnored="false" %>

         注意 <%@ page isELIgnored="true" %> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默認的啓用 EL  語言。

注:目前大多使用的高版本Tomcat都是支持el表達式的,沒必要去修改web.xml

2.el表達式的內置對象(重要)

pageScope、requestScope、sessionScope、applicationScope

假設在獲取值是沒有指定內置對象,那麼默認從 pageScope 到 applicationScope依次擴大範圍查找屬性名。舉例:

${requestScope.username}

在上邊的一行代碼中我制定了作用於requestScope,則此時他會直接去request數據域中查找username的值,但是當我不去指定時,此時程序會先去 page中找,找不到的話再去request中找。

3.el表達式的‘[ ]’和' . '運算符

(1)‘  . ’運算符最爲常用,他等作用是獲取相應的值如上邊的案例是獲取request數據域中的username值.

(2)‘[]’運算式當需要當要存取的屬性名稱中包含一些特殊字符時,必須使用‘[]’而不能使用‘.’

如:

${requestScope.user?name}(錯誤)
${requestScope["user?name"]}(正確)

 (3)如果要動態取值時,就可以用“[ ]“來做,而“.“無法做到動態取值

 4.pageContext的作用

pageContextJSP 頁的上下文。它可以用於訪問 JSP 隱式對象,如請求、響應、會話、輸出、servletContext 等

舉例:得到jsp所在項目名稱

${pageContext.request.contextPath}

注:這在請求路徑中使用絕對路徑時經常用到

5.EL表達式的操作符

 四.如何使用jstl

1.jstl的配置

(1)導入standard.jar和jstl.jar。

(2)在JSP頁面上引入 JSTL 的引用,即:

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

2.常用標籤解析(核心標籤)

(1)<c:out>:用於在JSP中顯示數據,和<%= ... >功能相似

 基本語法:<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

(2)<c:set>:用於保存數據

基本語法:<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>

(3)<c:remove>:標籤用於移除一個變量

基本語法:<c:remove var="<string>" scope="<string>"/>

(4)<c:catch> 標籤:主要用來處理產生錯誤的異常狀況,並且將錯誤信息儲存起來。

基本語法:<c:catch var="<string>">... </c:catch>

(5)<c:if>標籤:判斷表達式的值,如果表達式的值爲 true 則執行其主體內容

基本語法:<c:if test="<boolean>" var="<string>" scope="<string>">...</c:if>

(6)<c:choose>、<c:when>、<c:otherwise>:這三個標籤一般是配合使用,類似if{...}else if{...}else{....}

語法格式:

<c:choose>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:when test="<boolean>">
        ...
    </c:when>
    ...
    ...
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

(7)<c:import>標籤:檢索一個絕對或相對 URL,然後將其內容暴露給頁面,和<jsp:include>功能相似。

語法格式:

<c:import
   url="<string>"
   var="<string>"
   scope="<string>"
   varReader="<string>"
   context="<string>"
   charEncoding="<string>"/>

(8) <c:forEach>:基礎迭代標籤,接受多種集合類型。它封裝了Java中的for,while,do-while循環。

基本語法:

<c:forEach
    items="<object>"
    begin="<int>"
    end="<int>"
    step="<int>"
    var="<string>"
    varStatus="<string>">

 (9)<c:url>: 使用可選的查詢參數來創造一個URL,當某個URL地址依據不同條件修改時,就能體現出<c:url>標籤的真正作用了

(10)<c:param>:用來給包含或重定向的頁面傳遞參數

(11)<c:redirect>:重定向至一個新的URL.

語法:<c:redirect url="<string>" context="<string>"/>

五.緒

jstl也提供了格式化標籤、SQL標籤、xml標籤、jstl函數,但這些標籤並不常用,這裏不一一贅述,當用到時自行查找即可。

格式化標籤:(<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>)

SQL標籤:(<%@ taglib prefix="sql” uri="http://java.sun.com/jsp/jstl/sql" %>)

jstl函數(<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>)

六.實例代碼 (根據體重判斷你是不是胖子)

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2018/7/26
  Time: 10:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table>
<c:forEach items="${requestScope.uwList}" var="uw">
    <c:set var="weight" value="${uw.weight}"/>
    <c:choose>
        <c:when test="${weight<=100}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>瘦子</td></tr>
        </c:when>
        <c:when test="${weight>100&&weight<=150}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>正常</td></tr>
        </c:when>
        <c:when test="${weight>150&&weight<=200}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>胖子</td></tr>
        </c:when>
        <c:when test="${weight>200}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>大胖子</td></tr>
        </c:when>
        <c:otherwise>
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>體重不合理</td></tr>
        </c:otherwise>
    </c:choose>
</c:forEach>
</table>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章