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=“
< 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"會把信息中的<號編碼成<輸出。false則不編碼 -->
false:<c:out value="${str}" escapeXml="false"></c:out><br/>
true:<c:out value="${str}" escapeXml="true"></c:out><br/>
<!-- escapeXml="true"會把信息中的"<"號編碼成"<"輸出,若該屬性爲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>