java--JSTL(1)

JSTL簡介:
JSTL(Java Standard Tag Library) –Java標準標籤庫。
SUN公司制定的一套標準標籤庫的規範。
JSTL標籤庫,是由一些Java類組成的。
JSTL組成:
JSTL –Core 核心標籤庫。 - 這是本部分的重點
JSTL – I18N - 國際化標籤庫。Internationalization- I18N
JSTL – SQL – 數據庫操作標籤(有悖於MVC設計模式不用不講)。
JSTL - Functions – 函數庫。
JSTL - XML ,對XML的操作(同SQL標籤)。

在jstl-1.2.jar包的META-INF目錄中,保存着各種tld文件的版本。請查看。
JSTL核心標籤庫:
使用JSTL核心標籤:
1.如果你的Web項目是基於JavaEE2.5或以上的。可以在你項目的任意頁面上通過<%@ taglib 指令使用JSTL的核心標籤庫。
        <%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
        uri是引用標籤庫的資源定位符,並不代表一個實際的地址。
        Prefix是自定義的前綴。
2.如果你的項目是JavaEE2.5以下的項目,必須在在你項目中的lib目錄下,存在以下兩個jar文件爲:
        Jstl.jar、standard.jar
        在上面的包中,存在着jstl的tld文件,用於描述jstl標籤的屬性、名稱、資源等信息。程序就是通過這個tld文件找到相關java類以供運行的。
        然後再在任意的JSP頁面通過指令導入jstl.
Jar文件的說明:
Jstl-1.2.jar – 包含在jstl規範中定義的接口和類的class文件,在META-INF目錄下包含了所有可用的tld文件。
可以通過以下步驟修改引用jstl的方式:
找到META-INF目錄中的c.tld文件,將c.tld放到WEB-INF/tld/目錄下。
在web.xml中配置以下信息:
        < jsp-config>
                < taglib>
                < taglib-uri>/c.tld< /taglib-uri>
                < taglib-location>/WEB-INF/tld/c.tld< /taglib-location>
                < /taglib>
        < /jsp-config>
然後在頁面上如下使用:
<%@ taglib uri=“/c.tld” prefix=“c”%>
JSTL-Core一共包含以下幾個子標籤:
< c:out>–${name} 輸出標籤
< c:set>–pageContext.setAttirbute(key,value,scope); 聲明標籤
C:remove–刪除某個範疇內的數據
< c:if>–判斷c:else,c:elsfif
< c:choose>< c:when>< c:otherwise>–判斷分枝c:if,c:else if c:
< c:forEach>–遍歷
< c:forTokens>–分隔
< c:import>–導入其他資源,相當於動態包含共享同一個request
< c:url>–重寫url
< c:redirect>–重定向 response.sendRedirect(‘’..)
JSTL標籤-out/set/if:
JSTL標籤-out
這裏寫圖片描述
< c:out value=”“…/>用於在頁面上輸出結果。
< c:out value=“requestScope.name/>requestname<c:outvalue=  {param.username}”/> - 用於將參數輸出到頁面上。
< c:out value=“${name}” default=“hello”/>從page到application開始查找,如果沒有找到,就顯示默認值hello.
另一種設置默認值的方式:

< c:out value=“${name}”>
        Default-value-默認值。
< /c:out>
只有當要求的信息爲null或不存在時纔會輸出默認值。
excapeXml屬性:默認值爲true,用於將html等標籤轉換成<等轉換元素,
escapeXml=“false”–不對xml或html進行轉換,直接輸出,這樣就會在頁面上看到紅色的Red字符,因爲瀏覽器會解析html數據。
< c:set/>-聲明一個變量
這裏寫圖片描述
< c:set/>標籤的作用如下:
1.爲String類型的命名變量設置值。
        < c:set var=“變量名” value=“變量的值” scope=“page|request|session|application”/>
        < c:set var=“name” value=“${param.name}”/>直接從參數中取出數據給name賦值。

2.如果變量爲JavaBean則爲這個JavaBean的屬性設置值。
        < c:set target=“JavaBean的變量名” property=“設置的屬性” value=“值”/>
示例:
        < jsp:useBean id=”person” class=”cn.itcast.Person”>< /jsp:useBean>
        < c:set target=”${pageScope.person}” property=”name” value=”Jack”/>

3.如果變量爲Map則,給Map中的key設置值。
        < c:set target=“代表Map的變量” property=“key” value=“value”/>,示例:
        < jsp:useBean id=”map” class=”java.util.HashMap” scope=”request”>< /jsp:useBean>
        < c:set target=”${requestScope.map}” property=”name” value=”Jack”/>

        < c:out value=”${requestScope.map.name}”/>
< c:if> - 判斷標籤
這裏寫圖片描述
< c:if/>用於實現Java語言中的if語句。它的語法如下:
< c:if test=“邏輯表達式” var=“代表邏輯表達式值的命名變量” scope=../>
示例:
< c:if test=“${name!=‘Jack’}”>
當name的值爲Jack時輸出此行信息
< /c:if>
上面的判斷等價於下面的代碼片段:
if(pageContext.getAttribute(“name”)!=null && !..equals(“Jack”)){
out.println(“…..”);
}

<%@ page language="java" import="java.util.*,cn.hncu.domain.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- prefix前綴,相當於xml的命名空間 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JSTL用法演示1</title>
  </head>

  <body>
    <p><font color='red' size='6'>c:out標籤--用於在頁面上輸出結果</font></p>
        --輸出表達式或標識符的值(功能和${標識符}類似),差別在兩個屬性上(default,escapeXml)
    <%
        pageContext.setAttribute("name", "jack");

     %>
    <c:out value="${name}"></c:out><br/>
    <!--默認值default屬性的功能:當變量aa爲空時,輸出該屬性中的值none  -->
    <c:out value="${aa}" default="none"></c:out><br/>
    <%
        pageContext.setAttribute("str", "<font color='red' size='3'>湖南城市學院</font>");
     %>
    <!-- escapeXml="true"會把信息中的<號編碼成&lt;輸出。false則不編碼 -->
    false:<c:out value="${str}" escapeXml="false"></c:out><br/>
    true:<c:out value="${str}" escapeXml="true"></c:out><br/>
    <!-- escapeXml="true"會把信息中的"<"號編碼成"&lt;"輸出,若該屬性爲flase則編碼  -->


    <font color='red' size='6'>c:set標籤</font><br/>
    <!-- 給JavaBean設置屬性 -->
    <jsp:useBean id="u" class="cn.hncu.domain.User"></jsp:useBean>
    <c:set target="${u}" property="name" value="tom"></c:set>
    <c:set target="${u}" property="age" value="16"></c:set>
    <c:out value="${u}"></c:out><br/>
    姓名:<c:out value="${u.name}"></c:out><br/>
    年齡:<c:out value="${u.age}"></c:out><br/>

    <!-- 給String類型的變量設置值 -->
    <c:set var="sum" value="200"></c:set>
    <c:out value="${sum}"></c:out><br/>
    <font color='red' size='6'>c:if標籤--用於判斷控制</font><br/>
    <%
        pageContext.setAttribute("age", "25");
     %>
     ${age>20?"湖南abc代碼功能簡單時使用":"dsfsd"}<br/>
     <!-- 實現if-else功能 -->
     <!-- scope="session"放的哪個容器 -->
    <c:if test="${age>20}" var="boo" scope="session">
        湖南abc<br/>
        裏面有很多代碼時,用這種方式<br/>
    </c:if>
    <c:if test="${!boo}">
        sfdsfsd<br/>
    </c:if>
  </body>
</html>

這裏寫圖片描述

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