<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 簡介 JSTL(JSP Standard Tag Library),JSP標準標簽庫,可以嵌入在jsp頁面中使用標簽的形式完成業務邏輯等功能。jstl出現的目的同el一樣也是要代替jsp頁面中的腳本代碼。目的簡化java代碼 JSTL標準標準標簽庫有5個子庫,但隨著發展,目前常使用的是他的核心庫 * EL表達式雖然可以替代jsp表達式,但是由于EL表達式僅僅具有輸出功能,而不替代頁面中的jsp腳本片段 * 自定義標簽庫可以在jsp頁面中以類似于html標簽的形式調用java中的方法.使用方法和jsp動作標簽類似 | 標簽庫 | 標簽庫的URL | 前綴 | | --- | --- | --- | | Core | http://java.sun.com/jsp/jstl/core | c | | I18N | http://java.sun.com/jsp/jstl/fmt | fmt | | SQL | http://java.sun.com/jsp/jstl/sql | sql | | xml | http://java.sun.com/jsp/jstl/xml | x | | Functions | http://java.sun.com/jsp/jstl/functions | fn | # JSTL下載與導入 JSTL下載: 從Apache的網站下載JSTL的JAR包。進入`http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/`網址下載 JSTL的安裝包。jakarta-taglibs-standard-1.1.2.zip,然后將下載好的JSTL安裝包 進行解壓, 此時,在lib目錄下可以看到兩個JAR文件,分別為jstl.jar和standard.jar。 其中,jstl.jar文件包含JSTL規范中定義的接口和相關類,standard.jar文件包含用于 實現JSTL的.class文件以及JSTL中5個標簽庫描述符文件(TLD) 將兩個jar包導入我們工程的lib中 使用jsp的taglib指令導入核心標簽庫 ~~~ <!-- taglib指令:用來引入標簽庫 uri:指定要引入標簽庫的位置 prefix:要使用的標簽庫的前置標簽名[jsp:] --> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> ~~~ # JSTL核心庫的常用標簽 不要在JSTL標簽里面加注釋 ## `<c:out value="" default="">` 輸出 這邊的out遇到js腳本不會執行 ~~~ <!-- c:out 向頁面輸出內容 通常結合EL表達式使用 value:屬性值中使用EL在域中取值 default:如果value值為空,顯示default中的值(可不寫) --> <% request.setAttribute("name", "x"); request.setAttribute("code", "<script>alert('11')</script>"); %> <c:out value="${name}" default="游客"></c:out> <br> <!-- jstl不會彈窗 escapeXml:是否自動轉義標簽,默認true轉義 false就會彈窗了,(可不寫) --> <c:out value="${code}" escapeXml="false"></c:out> <!-- EL會彈窗 --> ${code} ~~~ ## `<c:set var=" " value=" ">` 向域中存值,默認存到pageScope域 ~~~ <!-- c:set 向域中設置值 var: 向域中存值的key value: 值 scope: 指定域(可不寫) page, request, session, application --> <!-- 向域中存值 --> <c:set var="address" value="hangzou" scope="request"></c:set> <!-- 取值 --> ${address} ~~~ ## `<c:remove >` 移除域中的屬性值 全域移除,遍歷每個域移除所有,可以指定域 ~~~ <c:set var="address" value="hangzou" scope="request"></c:set> <!-- c:remove 移除域中的屬性值 var: 要移除屬性的key scope: 指定域移除(可不寫) --> <c:remove var="address" scope="request"></c:remove> <!-- 獲取不到 --> ${address} ~~~ ## `<c:if test=" ">` 其中test是返回boolean的條件 ~~~ <!-- test表示boolean表達式的結果 --> <c:if test="true"> 1 </c:if> ~~~ 看用戶名是否為空 ~~~ <c:if test="${empty param.username}"> 游客請登錄 </c:if> <c:if test="${!empty param.username}"> 已登錄 </c:if> ~~~ ~~~ <% request.setAttribute("count", 10); %> <!-- jstl標簽經常會和el配合使用 --> <!-- test代表的返回boolean的表達式 --> <c:if test="${count==10 }"> xx </c:if> ~~~ ## `<c:choose>` 這個標簽可以組成if-else語句 注釋寫的地方要注意 ![](https://box.kancloud.cn/ddcfa228edc08db06d8838f4d8fe7ad6_976x664.png) ~~~ <!-- 一下三個標簽語句if-else c:choose if-else語句的開始 內部只有when或者c:otherwise兩個 可以有多個when,但是是互斥關系,只會執行一個 c:when test:when語句的執行條件,只能接收布爾值 if或else if c:otherwise else otherwise語句可以沒有,如果有些到最下面 --> <c:choose> <c:when test="${param.score>=80}"> 優秀 <br /> </c:when> <c:when test="${param.score>=60}"> 及格 <br /> </c:when> <c:when test="${param.score<=60}"> 不及格 <br /> </c:when> <c:otherwise> otherwise語句 </c:otherwise> </c:choose> ~~~ ## `<c:redirect>` `<c:redirect>`主要用于將請求重定向到另一個資源地址 可設置屬性 * url 作用:指定要重定向到的目標地址,注意這里指定絕對路徑會自動加上項目名 參數類型:string ~~~ <c:redirect url="/target.jsp"></c:redirect> ~~~ ## `<c:url value="" var="" scope="">` * value 設置要處理的URI地址,注意這里要以/開頭 * var 修改后存儲到域對象中的uri屬性名 * scope 設置修改后uri存放的域 例: **使用相對路徑** ~~~ <c:url value="index.jsp" var="uri" scope="request"> <c:param name="name" value="張三"></c:param> </c:url> ~~~ 會生成如下地址: index.jsp?name=%E5%bc%AO **使用絕對路徑** 使用絕對路徑會自動在路徑前加上項目名 ~~~ <c:url value="/index.jsp" var="uri" scope="request"> <c:param name="name" value="張三"></c:param> </c:url> ~~~ 會生成如下路徑 `/javaWeb/index.jsp?name=%E5%bc%AO` ## `<c:forEach>` 使用方式有兩種組合形式 **forEach模擬** ~~~ <!-- forEach模擬 for (int i=0; i<5; i++) { syso(i); } --> <!-- begin:起始索引,必須大于等于0,小于0就報錯 end:結束索引 var:每次遍歷,系統會自動將正在遍歷的索引存到page域中,key就是var的值,遍歷執行完,系統會自動移除域中的值,foreach中var的屬性值作用域就在標簽內 step:每次遍歷的步數 --> <c:forEach begin="0" end="5" var="i" step="1"> ${i} <br /> </c:forEach> ~~~ **增強for** ~~~ <!-- 模擬增強for productList---List<Product> for(Product product : productList) { syso(product.getPname()); } --> <!-- 這是域中取的 --> <!-- items:一個集合或數組 var:代表集合中的某一個元素 <c:forEach items="${productList }" var="pro"> ${pro.pname} </c:forEach> --> ~~~ 示例: 1. 遍歷`List<String>`的值 2. 遍歷`List<User>`的值 3. 遍歷`Map<String,String>`的值 4. 遍歷Map<String,User>的值 5. 遍歷Map<User,Map<String,User>>的值 ~~~ entry.key-----User entry.value------List<String,User> ~~~ ~~~ <% //模擬List<String> strList List<String> strList = new ArrayList<String>(); strList.add("1111"); strList.add("222"); strList.add("333"); strList.add("444"); request.setAttribute("strList", strList); //遍歷List<User>的值 List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setId(2); user1.setName("lisi"); user1.setPassword("123"); userList.add(user1); User user2 = new User(); user2.setId(3); user2.setName("wangwu"); user2.setPassword("123"); userList.add(user2); application.setAttribute("userList", userList); //遍歷Map<String,String>的值 Map<String,String> strMap = new HashMap<String,String>(); strMap.put("name", "lucy"); strMap.put("age", "18"); strMap.put("addr", "西三旗"); strMap.put("email", "lqqdwdwd2cn"); session.setAttribute("strMap", strMap); //遍歷Map<String,User>的值 Map<String,User> userMap = new HashMap<String,User>(); userMap.put("user1", user1); userMap.put("user2", user2); request.setAttribute("userMap", userMap); %> <h1>取出strList的數據</h1> <c:forEach items="${strList }" var="str"> ${str }<br/> </c:forEach> <h1>取出userList的數據</h1> <c:forEach items="${userList}" var="user"> user的name:${user.name }------user的password:${user.password }<br/> </c:forEach> <h1>取出strMap的數據</h1> <c:forEach items="${strMap }" var="entry"> ${entry.key }====${entry.value }<br/> </c:forEach> <h1>取出userMap的數據</h1> <c:forEach items="${userMap }" var="entry"> ${entry.key }:${entry.value.name }--${entry.value.password }<br/> </c:forEach> ~~~ # JSTL函數標簽庫 ## 導入 導入標簽庫 ~~~ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> ~~~ ## replace 字符串替換 ~~~ <!-- 把第一個字符串中的那個字符串替換成第三個參數 --> ${fn:replace("123456", "2", "x")} ~~~ ## length 查看字符串長度 ~~~ ${fn:length("jdxia")} ~~~ ## toLowerCase 字符串中包含的所有字符轉換為小寫形式 ~~~ <%-- fn:toLowerCase函數將一個字符串中包含的所有字符轉換為小寫形式,并返回轉換后的字符串, 它接收一個字符串類型的參數。 注意:fn:toLowerCase("")的返回值為空字符串。 --%> <%-- fn:toLowerCase("Www.CNBLOGS.COM")的返回值為字符串“www.cnblogs.com” --%> fn:toLowerCase("Www.CNBLOGS.COM")的結果是:${fn:toLowerCase("Www.CNBLOGS.COM") } ~~~ ## toUpperCase ~~~ <%-- fn:toUpperCase函數將一個字符串中包含的所有字符轉換為大寫形式,并返回轉換后的字符串, 它接收一個字符串類型的參數。 注意:fn:toUpperCase("")的返回值為空字符串。 --%> fn:toUpperCase("www.cnblogs.com")的結果是:${fn:toUpperCase("www.cnblogs.com") } ~~~ ## trim ~~~ <%-- fn:trim函數刪除一個字符串的首尾的空格,并返回刪除空格后的結果字符串, 它接收一個字符串類型的參數。 需要注意的是,fn:trim函數不能刪除字符串中間位置的空格。 --%> fn:trim(" cnblogs.com ")的結果是:${fn:trim(" cnblogs.com ") } ~~~ ## split ~~~ <%-- fn:split函數以指定字符串作為分隔符,將一個字符串分割成字符串數組并返回這個字符串數組。 fn:split函數接收兩個字符串類型的參數,第一個參數表示要分割的字符串,第二個參數表示作為分隔符的字符串 --%> fn:split("www.cnblogs.com",".")[0]的結果是:${fn:split("www.cnblogs.com", ".")[0] } ~~~ ## join ~~~ <%-- fn:join函數以一個字符串作為分隔符,將一個字符串數組中的所有元素合并為一個字符串并返回合并后的結果字符串。 fn:join函數接收兩個參數,第一個參數是要操作的字符串數組,第二個參數是作為分隔符的字符串。 如果fn:join函數的第二個參數是空字符串,則fn:join函數的返回值直接將元素連接起來。 --%> <% String[] strs = {"www", "iteye", "com"}; pageContext.setAttribute("strs", strs); %> <%-- fn:join(StringArray,".")返回字符串“www.iteye.com”--%> fn:join(StringArray,".")的結果是:${fn:join(strs, ".") } <br/> <%-- fn:join(fn:split("www,iteye,com",","),".")的返回值為字符串“www.iteye.com”--%> fn:join(fn:split("www,iteye,com",","),".")的結果是:${fn:join(fn:split("www,iteye,com", ","), ".") } ~~~ ## indexOf ~~~ <%-- fn:indexOf函數返回指定字符串在一個字符串中第一次出現的索引值,返回值為int類型。 fn:indexOf函數接收兩個字符串類型的參數,如果第一個參數字符串中包含第二個參數字符串, 那么,不管第二個參數字符串在第一個參數字符串中出現幾次,fn:indexOf函數總是返回第一次出現的索引值; 如果第一個參數中不包含第二個參數,則fn:indexOf函數返回-1。 如果第二個參數為空字符串,則fn:indexOf函數總是返回0。 --%> fn:indexOf("www.iteye.com","eye")的返回值為:${fn:indexOf("www.iteye.com","eye") } ~~~ ## contains ~~~ <%-- fn:contains函數檢測一個字符串中是否包含指定的字符串,返回值為布爾類型。 fn:contains函數在比較兩個字符串是否相等時是大小寫敏感的。 fn:contains函數接收兩個字符串類型的參數,如果第一個參數字符串中包含第二個參數字符串,則fn:contains函數返回true,否則返回false。 如果第二個參數的值為空字符串,則fn:contains函數總是返回true。 實際上,fn:contains(string, substring)等價于fn:indexOf(string, substring) != -1 忽略大小的EL函數:fn:containsIgnoreCase --%> fn:contains("aaaaaabbcc","ab")的結果為:${fn:contains("aaaaaabbcc","ab") } ~~~ ## startsWith ~~~ <h3>fn:startsWith函數和fn:endsWith函數使用范例:</h3> <%-- fn:startsWith函數用于檢測一個字符串是否是以指定字符串開始的,返回值為布爾類型。 fn:startsWith函數接收兩個字符串類型的參數,如果第一個參數字符串以第二個參數字符串開始,則函數返回true,否則函數返回false。 如果第二個參數為空字符串,則fn:startsWith函數總是返回true。 與fn:startsWith函數對應的另一個EL函數為:fn:endsWith,用于檢測一個字符串是否是以指定字符串結束的,返回值為布爾類型。 --%> fn:startsWith("www.iteye.com","iteye")的返回值為:${fn:startsWith("www.iteye.com","iteye") } <br/> fn:endsWith("www.iteye.com","com")的返回值為:${fn:endsWith("www.iteye.com","com") } ~~~ ## replace ~~~ <h3>fn:replace使用范例:</h3> <%-- fn:replace函數將一個字符串中包含的指定子字符串替換為其它的指定字符串,并返回替換后的結果字符串。 fn:replace方法接收三個字符串類型的參數,第一個參數表示要操作的源字符串,第二個參數表示源字符串中要被替換的子字符串, 第三個參數表示要被替換成的字符串。 --%> fn:replace("www iteye com ", " ", ".")的返回值為字符串:${fn:replace("www iteye com ", " ", ".") } <hr/> ~~~ ## substring ~~~ <%-- fn:substring函數用于截取一個字符串的子字符串并返回截取到的子字符串。 fn:substring函數接收三個參數,第一個參數是用于指定要操作的源字符串,第二個參數是用于指定截取子字符串開始的索引值,第三個參數是用于指定截取子字符串結束的索引值, 第二個參數和第三個參數都是int類型,其值都從0開始。 --%> fn:substring("www.it315.org", 4, 9) 的返回值為字符串:${fn:substring("www.it315.org", 4, 9) } ~~~ ## substringAfter ~~~ <h3>fn:substringAfter函數和fn:substringBefore函數使用范例:</h3> <%-- fn:substringAfter函數用于截取并返回一個字符串中的指定子字符串第一次出現之后的子字符串。 fn:substringAfter函數接收兩個字符串類型的參數,第一個參數表示要操作的源字符串,第二個參數表示指定的子字符串。 與之對應的EL函數為:fn:substringBefore。 --%> fn:substringAfter("www.it315.org",".")的返回值為字符串:${fn:substringAfter("www.it315.org",".") } <br/> fn:substringBefore("www.it315.org",".")的返回值為字符串:${fn:substringBefore("www.it315.org",".") } <hr/> ~~~ ## escapeXml ~~~ <h3>fn:escapeXml函數使用范例:</h3> fn:escapeXml("&lt;a href='www.cnblogs.com'&gt;點點&lt;/a&gt;")的結果是:${fn:escapeXml("<a href='www.cnblogs.com'>點點</a>") } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看