網(wǎng)站企業(yè)建設(shè)方案seo外鏈要做些什么
目錄
為什么會(huì)有JSTL?
什么是JSTL?
如何理解JSTL標(biāo)準(zhǔn)標(biāo)簽庫(kù)呢?
如何使用JSTL?
第一步:引入JSTL標(biāo)簽庫(kù)對(duì)應(yīng)的jar包。
第二步:在JSP中引入要使用標(biāo)簽庫(kù)。(使用taglib指令引入標(biāo)簽庫(kù)。)
第三步:在需要使用標(biāo)簽的位置使用即可。表面使用的是標(biāo)簽,底層實(shí)際上還是java程序。
JSTL的本質(zhì)是什么?
JSTL原理剖析
源碼解析:配置文件tld解析
JSTL的常用標(biāo)簽:
為什么會(huì)有JSTL?
????????在此之前我們?yōu)榱耸沟肑SP中的java代碼更加簡(jiǎn)潔,我們使用了EL表達(dá)式,EL表達(dá)式的主要作用是從域中取數(shù)據(jù),但是有時(shí)候我們?cè)贘SP中也會(huì)書寫其他Java代碼,比如if判斷啊或者for循環(huán)等等,那么這些代碼的簡(jiǎn)化是無(wú)法用EL表達(dá)式完成的,所以我們就引入了JSTL,Java標(biāo)準(zhǔn)標(biāo)簽庫(kù);
? ? ? ? 從上面的概念引入中我們可以得出,JSTL的作用:簡(jiǎn)化JSP中的java代碼;
什么是JSTL?
-
Java Standard Tag Lib(Java標(biāo)準(zhǔn)的標(biāo)簽庫(kù))
-
JSTL標(biāo)簽庫(kù)通常結(jié)合EL表達(dá)式一起使用。目的是讓JSP中的java代碼消失。
-
標(biāo)簽是寫在JSP當(dāng)中的,但實(shí)際上最終還是要執(zhí)行對(duì)應(yīng)的java程序。(java程序在jar包當(dāng)中。)
如何理解JSTL標(biāo)準(zhǔn)標(biāo)簽庫(kù)呢?
? ? ? ? 我們之前接觸標(biāo)簽是在學(xué)習(xí)了HTML超文本標(biāo)記語(yǔ)言是接觸的,呢么標(biāo)簽是如何創(chuàng)造的呢?為什么會(huì)使用標(biāo)簽?zāi)?#xff1f;我們之前學(xué)過(guò)將Java中常用的代碼封裝成一個(gè)方法,這樣是為了在使用到這個(gè)方法的時(shí)候能避免重復(fù)書寫一些復(fù)雜的代碼,標(biāo)簽也是一樣,你可以認(rèn)為標(biāo)簽就是一個(gè)方法名,他的底層還是Java代碼,知識(shí)在使用時(shí)為了簡(jiǎn)便,我們將這些重復(fù)的代碼封裝成了一個(gè)一個(gè)的標(biāo)簽;標(biāo)簽的底層還是Java代碼,只是為了讓我們程序員減少代碼書寫量而創(chuàng)建的一種簡(jiǎn)便用法;
如何使用JSTL?
-
第一步:引入JSTL標(biāo)簽庫(kù)對(duì)應(yīng)的jar包。
-
在IDEA當(dāng)中怎么引入?
-
在WEB-INF下新建lib目錄,然后將jar包拷貝到lib當(dāng)中。然后將其“Add Lib...”
-
一定是要和mysql的數(shù)據(jù)庫(kù)驅(qū)動(dòng)一樣,都是放在WEB-INF/lib目錄下的。
-
什么時(shí)候需要將jar包放到WEB-INF/lib目錄下?如果這個(gè)jar是tomcat服務(wù)器沒(méi)有的。
-
-
tomcat10之后引入的jar包是:
-
jakarta.servlet.jsp.jstl-2.0.0.jar
-
jakarta.servlet.jsp.jstl-api-2.0.0.jar
-
-
第二步:在JSP中引入要使用標(biāo)簽庫(kù)。(使用taglib指令引入標(biāo)簽庫(kù)。)
-
JSTL提供了很多種標(biāo)簽,你要引入哪個(gè)標(biāo)簽????重點(diǎn)掌握核心標(biāo)簽庫(kù)。
-
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!--這個(gè)就是核心標(biāo)簽庫(kù)。--> <!--prefix="這里隨便起一個(gè)名字就行了,核心標(biāo)簽庫(kù),工作中常被默認(rèn)的叫做c,你隨意。"-->
-
-
第三步:在需要使用標(biāo)簽的位置使用即可。表面使用的是標(biāo)簽,底層實(shí)際上還是java程序。
-
JSTL的本質(zhì)是什么?
? ? ? ? 上面已經(jīng)說(shuō)的很清楚了,JSTL的本質(zhì)是Java代碼,JSTL只是更好的將Java代碼封裝成了一個(gè)一個(gè)簡(jiǎn)便的標(biāo)簽;
JSTL原理剖析
-
<%@taglib prefix="c" uri="Oracle Java Technologies | Oracle" %> 以上uri后面的路徑實(shí)際上指向了一個(gè)xxx.tld文件。 tld文件實(shí)際上是一個(gè)xml配置文件。 在tld文件中描述了“標(biāo)簽”和“java類”之間的關(guān)系。 以上核心標(biāo)簽庫(kù)對(duì)應(yīng)的tld文件是:c.tld文件。它在哪里。 在jakarta.servlet.jsp.jstl-2.0.0.jar里面META-INF目錄下,有一個(gè)c.tld文件。
源碼解析:配置文件tld解析
<tag><description>對(duì)該標(biāo)簽的描述</description><name>catch</name> 標(biāo)簽的名字<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> 標(biāo)簽對(duì)應(yīng)的java類。<body-content>JSP</body-content> 標(biāo)簽體當(dāng)中可以出現(xiàn)的內(nèi)容,如果是JSP,就表示標(biāo)簽體中可以出現(xiàn)符合JSP所有語(yǔ)法的代碼。例如EL表達(dá)式。<attribute><description>對(duì)這個(gè)屬性的描述</description><name>var</name> 屬性名<required>false</required> false表示該屬性不是必須的。true表示該屬性是必須的。<rtexprvalue>false</rtexprvalue> 這個(gè)描述說(shuō)明了該屬性是否支持EL表達(dá)式。false表示不支持。true表示支持EL表達(dá)式。</attribute></tag><c:catch var="">JSP....
</c:catch>
JSTL的常用標(biāo)簽:
jstl中的核心標(biāo)簽庫(kù)core當(dāng)中有哪些常用的標(biāo)簽?zāi)?#xff1f;
-
c:if
<c:if test="boolean類型,支持EL表達(dá)式"></c: if>
-
c:forEach
-
<c:forEach items="集合,支持EL表達(dá)式" var="集合中的元素" varStatus="元素狀態(tài)對(duì)象"> ${元素狀態(tài)對(duì)象.count} </c: forEach>
-
<c:forEach var="i" begin="1" end="10" step="2"> ${i} </c: forEach>
-
-
c:choose c:when c:otherwise
<c:choose><c:when test="${param.age < 18}">青少年</c:when><c:when test="${param.age < 35}">青年</c:when><c:when test="${param.age < 55}">中年</c:when><c:otherwise>老年</c:otherwise>
</c:choose>