Servlet之JSTL

JSTL標籤庫

JSTL是apache對EL表達式的擴展(也就是說JSTL依賴EL),JSTL是標籤語言!JSTL標籤使用很是方便,它與JSP動做標籤同樣,只不過它不是 JSP內置的標籤,須要咱們本身導包,以及指定標籤庫。html

爲何須要JSTL標籤庫?在渲染jsp頁面時,不少時候會進行條件判斷、循環等操做,這時又要與java邏輯代碼混寫。JSTL就能夠解決這個問題java

一、導入JSTL(IDE版)apache

  • 在項目中添加lib目錄並導入相關的jar包

image

  • 在jsp頁面中添加taglib標籤指令

image
taglib中uri必須是這個,能夠看到這個uri變成紅色,爆紅意味着找不到,國內是訪問不到這個地址,咱們須要配置成本地標籤。
image
image
imagesession

二、JSTL標籤的基本使用app

  • 核心標籤庫
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<style>
    td{
        text-align: center;
    }
</style>
<body>
<%--
 1.內容輸出
    <c:out value="" default=""></c:out> 
        value:要輸出的內容
        default:當value沒有設置值時,輸出default設置的值
 2.向做用域設置屬性值
    <c:set var="" value="" scope=""></c:set> 
        var:表示參數的key
        value:表示參數的值
        scope:指定向哪一個做用域設置屬性值,默認向pageContext做用域中設置屬性
 3.刪除做用域的數據
    <c:remove var="" scope=""></c:remove> 
        var:要刪除屬性的key
        scope:刪除指定做用域的值,若是沒指定,則刪除全部做用域key的值
 4.邏輯判斷
    <c:if test="" var="" scope=""></c:if>
        test:邏輯判斷表達式
        var:條件表達式的結果存儲變量
        scope:結果變量存儲的做用域
    <c:choose> 相似於switch case
        <c:when></c:when>
        <c:when></c:when>
            …… 
    </c:choose>
 5.循環
    <c:forEach begin="0" end="3" step="1" var="data" items="" varStatus=""></c:forEach> 
    begin:循環開始位置
    end:循環結束位置
    step:循環步長
    var:循環數據每條記錄的迭代變量名(隨便起個變量名便可)
    items:要循環的數據
    varStatus:循環狀態的變量值名稱(隨便起個名便可)
--%>

<c:set var="name" value="pageContext" scope="page"></c:set>
<c:set var="name" value="request" scope="request"></c:set>
<c:set var="name" value="session" scope="session"></c:set>
<c:set var="name" value="application" scope="application"></c:set>

<%--key相同,則優先取做用域範圍小的pageContext--%>
<c:out value="${name}"></c:out><%--輸出pageContext--%>

<%--key相同,如何取指定做用域中的值--%>
<c:out value="${pageScope.name}"></c:out><%--輸出pageContext--%>
<c:out value="${requestScope.name}"></c:out><%--輸出request--%>
<c:out value="${sessionScope.name}"></c:out><%--輸出session--%>
<c:out value="${applicationScope.name}"></c:out><%--輸出application--%>

<c:remove var="name"></c:remove>

<c:set var="i" value="2"></c:set>
<c:if test="${i>1}" var="flag" scope="request">
    <h3>JSTL</h3>
</c:if>

<c:set var="age" value="20"></c:set>
<c:choose>
    <c:when test="${age<18}">
        <b>青少年</b>
    </c:when>
    <c:when test="${age>=18}">
        <b>成年</b>
    </c:when>
</c:choose>

<hr>

<%
 HashMap<String, Integer> userInfo = new HashMap<String, Integer>();
 userInfo.put("zhangsan", 20);
 userInfo.put("lisi", 22);
 userInfo.put("wangwu", 24);
 userInfo.put("zhaoliu", 25);
 pageContext.setAttribute("userInfo", userInfo);
%>
<table border="1px" cellspacing="0" >
    <tr>
        <td>姓名</td>
        <td>年齡</td>
        <td>當前循環索引</td>
        <td>當前循環次數</td>
        <td>當前是不是第一次循環</td>
        <td>當前是不是最後一次循環</td>
    </tr>
    <c:forEach begin="0" end="3" step="1" var="data" items="${userInfo}" varStatus="status">
        <tr>
            <td>${data.key}</td>
            <td>${data.value}</td>
            <td>${status.index}</td>
            <td>${status.count}</td>
            <td>${status.first}</td>
            <td>${status.last}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

記住核心標籤庫便可,其餘標籤庫用到的時候再查
其餘標籤庫參考菜鳥教程https://www.runoob.com/jsp/js...jsp

  • 標準化標籤庫
  • 函數標籤庫
相關文章
相關標籤/搜索