Java Web(七) JSTL標簽庫


    在之前我們學過在JSP頁面上為了不使用腳本,所以我們有了JSP內置的行為、行為只能提供一小部分的功能,大多數的時候還是會用java腳本,接着就使用了EL表達式,基本上EL表達式看似能滿足我們的要求,它能夠獲取各種對象,各種值,並且還不會拋出NullPointerException之類的錯誤,但是EL表達式功能還是有限,例如不能遍歷集合等,因此為了完善JSP,讓其完全不使用java代碼,就有了jstl標簽庫,使用jstl和EL的配合使用,基本上可以實現所有的功能,顯示數據,遍歷數據等。

    

一、為什么使用標簽?

    JSP是用來顯示數據的,前面我們在JSP中的HTML中嵌入java代碼,與<%%>等混在一起,可讀性和可維護性都很差,而且使用java腳本不便於代碼重用,要實現比較復雜的顯示功能,也不方便,而JSP標簽和HTML代碼很類似,使用JSP標簽顯得JSP整潔而干凈,可讀性好,標簽能夠重復使用,所以就像我們上面說的,我們慢慢意識到不足,就自然在一步步改進,從使用JSP行為,使用EL,在使用標簽,都是為了一個目的,讓JSP更加完全,方便,只顯示數據,而不嵌入邏輯代碼。這個涉及到了分層思想,后面說講解到。

  

二、JSTL標簽庫

    JSTL標簽庫中包括很多種類的標簽core、fmt、fn方法庫、sql標簽庫,使用JSTL標簽庫,需要用taglib指令導入JSTL標簽庫      

    core標簽庫

      <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

      講解<c:out/>、<c:set/>、<c:remove/>、<c:if  test=""/>、<c:choose  />、<c:forTokens />、<c:catch /> 、<c:url  />、 <c:redirect />、<c:forEach/>、

    <c:out/>標簽

      out :將指定內容輸出到瀏覽器,默認支持el表達式,

      <c:out value="" default="" escapeXml />

          value:輸出的值,可以為EL表達式

          default:如果value屬性的值不存在,會輸出default屬性值

          excapeXml:如果為true,則會為value中的特殊字符進行轉義,默認為true

            

            

 

      <c:set/>和<c:remove/>標簽

            

          圖中只介紹set標簽的一種用法,其中var不能接受EL表達式,只能是字符,

          <c:set target="" property="" value="" />

            target:跟var類似,但是它能夠接受EL表達式,可以是一個對象,一個map等,和var進行互補

            property:對象中的屬性名 

            value:屬性賦值

            

 

          使用哪種set標簽,就看自己的需求了。

 

 

      <c:if  test=""/>標簽

            if條件語句

            

      <c:choose  />標簽

            

 

      <c:forTokens > 標簽

            將自定義字符串,按照指定字符進行分割,並遍歷輸出

            items:自定義字符串

            delims:指定字符

            var:遍歷的變量名。

            

      <c:catch > 標簽

            相當於try catch

            

            

            var:捕捉后的異常對象

 

       <c:forEach/>標簽

          增強的for循環,

          格式:

            <c:forEach items="" var="" /> 

            items:需要遍歷的對象

            var:用於存放遍歷的每一項內容,存放在page作用域,只能在循環體中使用

          1、items為字符串或字符串數組

              為字符串,直接輸出,為字符串數組,遍歷輸出

              

             

          2、items為list集合

              

 

          3、items為map集合

              

          4、普通for循環

              

              begin:從1開始

              end:到10結束

              step:每次加2

              var:循環的變量,

 

      <c:url  />標簽

          記得講session的時候,如果cookie禁用了,那么只能將url進行重寫才能讓session繼續生效,而使用的api是response.encodeURL();就是將SESSIONID當作參數帶過來,而url標簽的作用就是實現類似功能

          <c:url value="" var="" scope="" />  就講解三個屬性

            value:要進行重寫的url

            var:如果寫了該變量,那么就會將其重寫后的url存入page作用域中,如果scope沒有的話,默認就是page,否則以scope屬性值為准,在作用域范圍內就可以直接拿着這個變量使用了,如下面所展示的。

            scope:作用域范圍,默認是page,

              

            訪問后點擊超鏈接

              沒有關閉cookie,所以不會將SESSIONID寫入url中 。

              

 

      <c:redirect />標簽

          

 

    

      <c:import />標簽

          類似於JSP的include行為和include指令,JSTL也提供了include功能的標簽<c:import/>,不過import標簽功能更強大,甚至可以把Internet上的網頁包含進來。

          <c:import url="http://www.baidu.com" charEncoding="utf-8"/>

          

          

 

      

     fmt標簽庫

        是一些輔助性功能標簽,就講解一個把,用的不多,等用到的時候在去詳細學

        <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

        標簽只有一個屬性,value  

         <fmt:requestEncoding/>設置編碼,

          相當於Java中的request.setCharacterEncoding("");

          post提交中文參數,使用<fmt:requestEncoding value="utf-8"/>來設置編碼,就不會出現中文亂碼了。

          get提交中文參數,該標簽就會失效,除非到TOMCAT的server.xml中,將URLEncoding設置為UTF-8(默認為ISO-8859-1)。

        <fmt:setLocale/>顯示所有地區的數據格式

        等等

    fn方法庫

        提供一些方法,函數,例如字符串查找,截取之類。之所以不叫fn標簽庫而叫fn方法庫,因為與core,fmt標簽格式不一樣,並且必須在el表達式中使用

        格式:fn:methodName()的格式,比如,fn:contains()

        contains方法判斷是否包含指定的字符串,相當於java里String類的contains方法。

           fn:contains(String string1,String string2);

        containsIgnoreCase方法,判斷是否包含指定字符串,忽略大小寫

           fn:contains(String string1,String string2)

        endsWith方法,判斷某字符串是否以指定的參數結尾,

           fn:endWith(String string1,String string2);

        startsWith方法,判斷某字符串是否以指定參數開始

           fn:startsWith(String string1,String string2);

        escapeXml方法,是否轉義字符

           fn:escapeXml(source);

        indexOf方法,查找字符串在另一個字符串中第一次出現的位置

           fn:indexOf(String string1,String string2);

        split方法,將字符串以指定參數為界分割成多個字符串形成字符串數組

           。。

        join方法,與split方法相反,將字符串數組以參數為界連接成字符串

        length方法,取字符串,數組,集合的長度

        等等

    SQL標簽庫

        JSP中直接可以操作數據庫,但是大多數時候我們都不會這樣用。。

 

    XML標簽庫

        為了方便地處理XML,

          

三、總結

    重點講解了一下JSTL中的core標簽庫,其實也就是一些控制流程的標簽,沒什么思想,只要會用就行了,以后忘記了就回過頭來查查看,最重要的是思想,這些死東西記錄一下就行了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM