Web - JSTL 基礎

【JSTL的概述】

JSTL 1.0 :不支持EL表達式;JSTL 1.1和1.2 : 支持EL表達式。
JSTL的標籤庫,包含五類標籤
core 核心標籤,fmt 國際化標籤,fn(JSTL提供EL函數庫)
標籤庫功能描述 標籤庫的URI 建議前綴
核心標籤庫 http://java.sun.com/jsp/jstl/core c
XML標籤庫 http://java.sun.com/jsp/jstl/xml x
國際化/格式化標籤庫 http://java.sun.com/jsp/jstl/fmt
fmt
數據庫標籤庫 http://java.sun.com/jsp/jstl/sql
sql
EL自定義函數 http://java.sun.com/jsp/jstl/functions fn

下面對JSTL的各個標籤庫進行簡單的介紹:
(1)核心標籤庫中包含了實現WEB應用中的通用操作的標籤。例如,用於輸出一個變量內容的標籤、用於條件判斷的標籤、用於迭代循環的標籤。
(2)國際化/格式化標籤庫中包含實現WEB應用程序的國際化的標籤。例如,設置JSP頁面的本地信息、設置JSP頁面的時區、綁定資源文件,使本地敏感的數據(例如數值、日期等)按照JSP頁面中設置的本地格式顯示。
(3)數據庫標籤庫中包含用於訪問數據庫和對數據庫中的數據進行操作的標籤。例如,從數據源中獲得數據庫連接、從數據庫表中檢索數據等。由於在軟件分層的開發模型中,JSP頁面僅用作表現層,我們一般不在JSP頁面中直接操作數據庫,而是在業務邏輯層或數據訪問層操作數據庫,所以,JSTL中提供的這套數據庫標籤庫沒有多大的實用價值。
(4)XML標籤庫中包含對XML文檔中的數據進行操作的標籤。例如,解析XML文檔、輸出XML文檔中的內容,以及迭代處理XML文檔中的元素。因爲XML廣泛應用於WEB開發,對XML文檔的處理非常重要,XML標籤庫使處理XML文檔變得簡單方便,這也是JSTL的一個重要特徵。
(5)JSTL中提供的一套EL自定義函數包含了JSP頁面製作者經常要用到的字符串操作。例如,提取字符串中的子字符串、獲取字符串的長度和處理字符串中的空格等。

使用JSTL:
*引入JSTL的Jar包
*在頁面中引入標籤庫.<%@ taglib uri=”” prefix=”“%>
【JSTL核心標籤用法】

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL</title>
</head>
<body>
<h1> JSTL的核心標籤</h1>
<c:set var="n1" value="10" scope="page"> </c:set>
<c:set var="n2" value="20" scope="page"> </c:set>

<c:if test="${ n1 < n2 }">
hello world
</c:if>

|屬性名 |是否支持EL| 屬性類型| 屬 性 描 述
|value |true |Object |指定要輸出的內容
|escapeXml |true |Boolean |指定是否將>、<、&、’、” 等特殊字符進行HTML編碼轉換後再進行輸出。默認值爲true
|default |true |Object |指定如果value屬性的值爲null時所輸出的默認值

【C:out】
標籤標籤有兩種語法格式:
語法1,沒有標籤體的情況:

<body>
<h1>JSTL提供的EL的函數庫</h1>
${ fn:contains("hello world","hello") }
${ fn:length("hello world") }
${ fn:toLowerCase("ABCDEF") }

<c:forEach var="i" items='${ fn:split("a-b-c-d","-") }'>
    ${ i }
</c:forEach>

【JSTL的fn】

JSTL提供的EL的函數庫

fn:contains(helloworld,hello) { fn:length(“hello world”) }
${ fn:toLowerCase(“ABCDEF”) }


${ i }

<h1>JSTL的常用標籤</h1>
<c:set var="i" value="tommy" scope="page"></c:set>
${ i }
<c:set var="city" value="shanghai" scope="page"></c:set>

${ city }

<c:out value="${ city }" default="Hans"></c:out>
<c:out value="<h1>title1</h1>" escapeXml="false"></c:out>


<c:out value="hello"></c:out>


<c:set var="n1" value="10" scope="page"> </c:set>
<c:set var="n2" value="20" scope="page"> </c:set>
<c:if test="${ n1<n2 }" var="flag" scope="page">
    n1 less than n2
</c:if>

<c:if test="${ n1>=n2 }">
    n1 great than n2
</c:if>

<c:if test="${ flag }">
    n1 less than n2
</c:if>


<hr>

<h1>foreach label</h1>

<% 
    String[] arrs = {"aaa","bbb","ccc"};
    pageContext.setAttribute("arrs", arrs);

    List<String> list = new ArrayList<String>();
    list.add(0, "tommy");
    list.add(1, "hans");
    list.add(2, "johnson");
    pageContext.setAttribute("list", list);

    Map<String,String> map = new HashMap<String,String>();
    map.put("aaa", "tommy");
    map.put("vvv","hans");
    map.put("ccc", "lily");
    pageContext.setAttribute("map", map);
%>

<c:forEach var="i" items="${ arrs }">
    ${ i }
</c:forEach>

<c:forEach var="i" items="${ list }">
${ i }

</c:forEach>

<c:forEach var="entry" items="${ map }">
    ${ entry.key } 
  ${ entry.value }
</c:forEach>

<hr>
<h3>遍歷從0到10</h3>
<c:forEach var="i" begin="1" end="10" step="2">
${ i }
</c:forEach>

<hr>

<c:forEach var="i" begin="100" end="300" step="5" varStatus="status">
    <c:if test="${ status.count %3 == 0 }">
        <font color="red"> ${ i } </font>
    </c:if>

    <c:if test="${ status.count %3 != 0 }">
        <font color="green"> ${ i } </font>
    </c:if>
</c:forEach>

【在頁面顯示商品列表】

<h1>商品列表頁面</h1>
<table border="1" width="1000">
    <tr>
     []
    <td>商品的編號</td>
    <td>商品的價格</td>
    <td>商品的名稱</td>
    <td>商品的描述</td>

    </tr>

    <c:forEach var="p" items="${ list }"></c:forEach>

    <tr>

    <td>${ p.pid }</td>
    <td>${ p.pname }</td>
    <td>${ p.market_price }</td>
    <td>${ p.date }</td>

    </tr>

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