JSTL全稱爲 JSP Standard Tag Library 即JSP標準標籤庫。java
JSTL做爲最基本的標籤庫,提供了一系列的JSP標籤,實現了基本的功能:集合的遍歷、數據的輸出、字符串的處理、數據的格式化等等!web
c:out
<% session.setAttribute("name", "zhongfucheng"); %> //<c:out/>標籤支持標籤體,default屬性上的數據能夠寫在標籤體中 //<c:out value="${name}" escapeXml="true">您要的數據找不着</c:out> <c:out value="${name}" default="您要的數據找不着" escapeXml="true"/>
c:set
既然var屬性只能操做Integer、Double、String等類型,那麼存在var屬性就必定沒有property屬性(property表明的是對象的成員屬性,Integer、String這些類型哪來的成員變量呀)瀏覽器
下面的代碼流程是這樣的:建立了一個name的變量,設置的值爲zhongfucheng,範圍是page服務器
<c:set var="name" value="fucheng" scope="page"/> ${name}
<c:set var="name" scope="page"> zhongfucheng </c:set>
<%--因爲下面變量須要作加法運算,因此要定義出來,否則服務器是不知道個人變量是Integer類型的--%> <% Integer sessionCount = 0; Integer applicationCount = 0; %> <c:set var="sessionCount" value="${sessionCount+1}" scope="session"/> <c:set var="applicationCount" value="${applicationCount+1}" scope="application"/>
<%--建立出JavaBean對象,設置爲session範圍的屬性--%> <jsp:useBean id="person" class="domain.Person" scope="session"/> <%--獲取到person對象,設置age屬性的值爲32--%> <c:set target="${person}" property="age" value="32"/> ${person.age}
c:remove
remove標籤就至關簡單了,只有var和scope屬性,表明的是刪除域範圍的屬性微信
<%--建立出JavaBean對象,設置爲session範圍的屬性--%> <jsp:useBean id="person" class="domain.Person" scope="session"/> <%--獲取到person對象,設置age屬性的值爲32--%> <c:set target="${person}" property="age" value="32"/> ${person.age} <br> <%--刪除session屬性--%> <c:remove var="person" scope="session"></c:remove> ${person.age==null?"存在session的person對象被刪除了!":"我還在呢!"}
c:catch
該標籤主要用來處理程序中產生的異常。session
catch標籤也十分簡單,只有一個var屬性,var屬性封裝了異常的信息!app
<%--建立出JavaBean對象,設置爲session範圍的屬性--%> <jsp:useBean id="person" class="domain.Person" scope="session"/> <c:catch var="message"> <%--target屬性只能是EL表達式,如今我是字符串,獲取不到對象,確定會拋出異常的!--%> <c:set target="person" property="age" value="32"/> </c:catch> ${message}
c:if
JSTL提供了if標籤完成分支語句的實現,test屬性是不可或缺的。dom
var和scope屬性我看來好像沒什麼用的(保存執行結果有什麼用?)jsp
<%--若是帶過來的名字是zhongfucheng,那麼能夠登錄--%> <c:if test="${param.name=='zhongfucheng'}"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" value="登錄"> </c:if> <%--若是帶過來的名字是ouzicheng,那麼就是註冊--%> <c:if test="${param.name=='ouzicheng'}"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" value="註冊"> </c:if>
c:choose
if標籤沒有else的功能,若是須要相似於java中的if else流程就須要使用choose標籤。函數
choose標籤須要聯合when和otherwise標籤一塊兒使用!
<c:choose> <c:when test="${param.name=='zhongfucheng'}"> 你好啊,zhongfucheng </c:when> <c:when test="${param.name=='ouzicheng'}"> 你好啊,ouzicheng </c:when> <c:otherwise> 你是誰啊?別隨便過來! </c:otherwise> </c:choose>
c:forEach
forEach爲循環標籤,至關於Java中的while和for
以前咱們在使用EL表達式獲取到集合的數據,遍歷集合都是用scriptlet代碼循環,如今咱們學了forEach標籤就能夠捨棄scriptlet代碼了。
向Session中設置屬性,屬性的類型是List集合
<% List list = new ArrayList<>(); list.add("zhongfucheng"); list.add("ouzicheng"); list.add("xiaoming"); session.setAttribute("list", list); %>
<c:forEach var="list" items="${list}" > ${list}<br> </c:forEach>
<% Map map = new HashMap(); map.put("1", "zhongfucheng"); map.put("2", "xiaohong"); map.put("3", "xiaoming"); session.setAttribute("map",map); %> <c:forEach var="me" items="${map}" > ${me.key} ${me.value}<br> </c:forEach>
begin默認從0開始、end默認爲集合的最後一個元素、step默認爲1
varStatus表明着當前對象被迭代的信息,它有如下的屬性。
<c:forEach var="list" items="${list}" varStatus="varStatus" > ${list}您的下標是:${varStatus.index}<br> </c:forEach>
c:forTokens
該標籤相似於String類的split()和for循環的一種集合
它與forEach標籤很是類似,都有begin、end、step、items、var、varStatus屬性,不一樣的是forTokens標籤的items屬性裏面是字符串,這個字符串會被delims屬性的內容分割成多個字符串!
<c:forTokens items="zhongfucheng,ouzicheng,xiaoming,xiaohong" var="name" delims="," > ${name} </c:forTokens>
c:import
import標籤相似於JSP行爲<jsp:include/>
和JSP指令<%include>
import標籤的屬性:
固然了,import標籤功能更加更大!強大在哪裏呢?import標籤能夠引入Internet網頁上的內容,也就是說,csdn也能夠引入進來!
<c:import url="http://www.csdn.net" charEncoding="UTF-8" />
<c:import url="http://www.csdn.net" charEncoding="UTF-8" var="net"/> CSDN的源碼是:<br><br><br><br><br> <c:out value="${net}" escapeXml="true"></c:out>
c:param
在JSP頁面進行URL的相關操做時,常常要在URL地址後面附加一些參數。<c:param>標籤能夠嵌套在<c:import>、<c:url>或<c:redirect>標籤內,爲這些標籤所使用的URL地址附加參數。
<c:param>標籤在爲一個URL地址附加參數時,將自動對參數值進行URL編碼,例如,若是傳遞的參數值爲「中國」,則將其轉換爲「%d6%d0%b9%fa」後再附加到URL地址後面,這也就是使用<c:param>標籤的最大好處。
c:url
url標籤十分實用!在瀏覽器禁用Cookie的時候,咱們以前學Servlet時解決辦法是:response.encodeURL()。url標籤也能夠實現這樣的功能,再配合param標籤使用,就十分實用了!
<c:url value="2.jsp" var="url"> <c:param name="name" value="中國!"> </c:param> </c:url> <a href="${url}">我通過了URL地址重寫!</a>
c:redirect
redirect標籤用於實現Redirect功能,固然了,此標籤也可以配合param標籤使用!
<c:redirect url="2.jsp" > <c:param name="name" value="zhongfucheng"> </c:param> </c:redirect>
fmt標籤庫也叫作國際化標籤庫。這裏就不詳細說明了,等我講到Web 國際化的時候纔講吧!
fn方法庫也叫作EL函數庫、fn標籤庫。這個在講解EL表達式的時候有詳細的說明,可轉移到我EL表達式的博文中!
若是文章有錯的地方歡迎指正,你們互相交流。習慣在微信看技術文章的同窗,能夠關注微信公衆號:Java3y