亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

JSP第五篇【JSTL的介紹、core標(biāo)簽庫(kù)、fn方法庫(kù)、fmt標(biāo)簽庫(kù)】

solocoder / 2017人閱讀

摘要:標(biāo)簽在為一個(gè)地址附加參數(shù)時(shí),將自動(dòng)對(duì)參數(shù)值進(jìn)行編碼,例如,如果傳遞的參數(shù)值為中國(guó),則將其轉(zhuǎn)換為后再附加到地址后面,這也就是使用標(biāo)簽的最大好處。

什么是JSTL

JSTL全稱(chēng)為 JSP Standard Tag Library 即JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)

JSTL作為最基本的標(biāo)簽庫(kù),提供了一系列的JSP標(biāo)簽,實(shí)現(xiàn)了基本的功能:集合的遍歷、數(shù)據(jù)的輸出、字符串的處理、數(shù)據(jù)的格式化等等!

為什么要使用JSTL

EL表達(dá)式不夠完美,需要JSTL的支持!在JSP中,我們前面已經(jīng)用到了EL表達(dá)式,體會(huì)到了EL表達(dá)式的強(qiáng)大功能:使用EL表達(dá)式可以很方便地引用一些JavaBean以及其屬性,不會(huì)拋出NullPointerException之類(lèi)的錯(cuò)誤!但是,EL表達(dá)式非常有限,它不能遍歷集合,做邏輯的控制。這時(shí),就需要JSTL的支持了!

Scriptlet的可讀性,維護(hù)性,重用性都十分差!JSTL與HTML代碼十分類(lèi)似,遵循著XML標(biāo)簽語(yǔ)法,使用JSTL讓JSP頁(yè)面顯得整潔,可讀性非常好,重用性非常高,可以完成復(fù)雜的功能!

在JSP中不推薦使用scriptlet輸出,推薦使用JSP標(biāo)簽。

使用JSTL標(biāo)簽庫(kù)步驟:

導(dǎo)入jstl.jar和standard.jar開(kāi)發(fā)包

在JSP頁(yè)面中用tablib指令引入需要用到的JSTL標(biāo)簽

core標(biāo)簽庫(kù)

core標(biāo)簽庫(kù)是JSTL的核心標(biāo)簽庫(kù),實(shí)現(xiàn)了最基本的功能:流程控制、迭代輸出等操作!

core標(biāo)簽庫(kù)的前綴一般是c

c:out

簡(jiǎn)單使用一下

    <%
        session.setAttribute("name", "zhongfucheng");
    %>
    
    //標(biāo)簽支持標(biāo)簽體,default屬性上的數(shù)據(jù)可以寫(xiě)在標(biāo)簽體中
    //您要的數(shù)據(jù)找不著

    

    

我們發(fā)現(xiàn)上面的代碼實(shí)現(xiàn)的效果和EL表達(dá)式是一樣的,它出色的地方就多了兩個(gè)屬性,default和escapeXml屬性。如果我們用到這兩個(gè)屬性,我們就使用該標(biāo)簽,如果沒(méi)有用到這兩個(gè)屬性就用EL表達(dá)式就可以了。

c:set

該標(biāo)簽有5個(gè)屬性,用起來(lái)有稍微有些復(fù)雜了!現(xiàn)在要記住的就是:var屬性操作的是Integer、Double、Float、String等類(lèi)型的數(shù)據(jù),target屬性操作的是JavaBean或Map對(duì)象的數(shù)據(jù),scope代表的是Web域,value是值,property是對(duì)象的屬性

使用var屬性

既然var屬性只能操作Integer、Double、String等類(lèi)型,那么存在var屬性就一定沒(méi)有property屬性(property代表的是對(duì)象的成員屬性,Integer、String這些類(lèi)型哪來(lái)的成員變量呀)

下面的代碼流程是這樣的:創(chuàng)建了一個(gè)name的變量,設(shè)置的值為zhongfucheng,范圍是page

    
    
    ${name}

效果:

當(dāng)然了,set標(biāo)簽也支持標(biāo)簽體,value的值可以寫(xiě)在標(biāo)簽體里邊

    
        zhongfucheng
    

使用var屬性和scope屬性實(shí)現(xiàn)計(jì)數(shù)器


    <%--由于下面變量需要做加法運(yùn)算,所以要定義出來(lái),不然服務(wù)器是不知道我的變量是Integer類(lèi)型的--%>
    <%
        Integer sessionCount = 0;
        Integer applicationCount = 0;
    %>
    
    
    

效果:

使用target屬性

使用target屬性與之配對(duì)的是property屬性,target屬性只能操作JavaBean或Map對(duì)象,property就是對(duì)應(yīng)的成員變量或key了。。

既然target屬性操作的是JavaBean或Map對(duì)象,那么一定是通過(guò)EL表達(dá)式來(lái)獲取到對(duì)象了。taget屬性如果獲取不到數(shù)據(jù)會(huì)拋出異常!使用target屬性就一定沒(méi)有scope屬性(scope屬性代表的是保存范圍,target的值都是獲取來(lái)的,難道你還能改變?nèi)思业姆秶???/strong>

    <%--創(chuàng)建出JavaBean對(duì)象,設(shè)置為session范圍的屬性--%>
    
    
    <%--獲取到person對(duì)象,設(shè)置age屬性的值為32--%>
    
    
    ${person.age}

效果:

c:remove

remove標(biāo)簽就相當(dāng)簡(jiǎn)單了,只有var和scope屬性,代表的是刪除域范圍的屬性

下面簡(jiǎn)單來(lái)測(cè)試一下吧:

    <%--創(chuàng)建出JavaBean對(duì)象,設(shè)置為session范圍的屬性--%>
    
    
    <%--獲取到person對(duì)象,設(shè)置age屬性的值為32--%>
    
    
    ${person.age}
    
<%--刪除session屬性--%> ${person.age==null?"存在session的person對(duì)象被刪除了!":"我還在呢!"}

效果:

c:catch

該標(biāo)簽主要用來(lái)處理程序中產(chǎn)生的異常。

catch標(biāo)簽也十分簡(jiǎn)單,只有一個(gè)var屬性,var屬性封裝了異常的信息!

    <%--創(chuàng)建出JavaBean對(duì)象,設(shè)置為session范圍的屬性--%>
    
    
    
    
        <%--target屬性只能是EL表達(dá)式,現(xiàn)在我是字符串,獲取不到對(duì)象,肯定會(huì)拋出異常的!--%>
        
    
    
    
    ${message}

效果:

c:if

JSTL提供了if標(biāo)簽完成分支語(yǔ)句的實(shí)現(xiàn),test屬性是不可或缺的。

var和scope屬性我看來(lái)好像沒(méi)什么用的(保存執(zhí)行結(jié)果有什么用?)

根據(jù)傳遞過(guò)來(lái)的參數(shù)的不同顯示不同的頁(yè)面!

    <%--如果帶過(guò)來(lái)的名字是zhongfucheng,那么可以登陸--%>
    
        用戶(hù)名:
密碼:
<%--如果帶過(guò)來(lái)的名字是ouzicheng,那么就是注冊(cè)--%> 用戶(hù)名:
密碼:

注意地址欄的參數(shù)!

c:choose

if標(biāo)簽沒(méi)有else的功能,如果需要類(lèi)似于java中的if else流程就需要使用choose標(biāo)簽。

choose標(biāo)簽需要聯(lián)合when和otherwise標(biāo)簽一起使用!

    
        
            你好啊,zhongfucheng
        
        
            你好啊,ouzicheng
        
        
            你是誰(shuí)???別隨便過(guò)來(lái)!
        
    

效果:

c:forEach

forEach為循環(huán)標(biāo)簽,相當(dāng)于Java中的while和for

之前我們?cè)谑褂肊L表達(dá)式獲取到集合的數(shù)據(jù),遍歷集合都是用scriptlet代碼循環(huán),現(xiàn)在我們學(xué)了forEach標(biāo)簽就可以舍棄scriptlet代碼了。

向Session中設(shè)置屬性,屬性的類(lèi)型是List集合

    <%
        List list = new ArrayList<>();
        list.add("zhongfucheng");
        list.add("ouzicheng");
        list.add("xiaoming");
    
        session.setAttribute("list", list);
    %>

遍歷session屬性中的List集合,items:即將要迭代的集合。var:當(dāng)前迭代到的元素

    
        ${list}

效果:

遍歷Map對(duì)象有稍微地不一樣,我們來(lái)看一下,var屬性保存的不是每個(gè)迭代的對(duì)象,而是Map.Entry。


    <%
        Map map = new HashMap();
        map.put("1", "zhongfucheng");
        map.put("2", "xiaohong");
        map.put("3", "xiaoming");
    
        session.setAttribute("map",map);
    %>
    
    
    
        ${me.key}  ${me.value}

begin默認(rèn)從0開(kāi)始、end默認(rèn)為集合的最后一個(gè)元素、step默認(rèn)為1

varStatus代表著當(dāng)前對(duì)象被迭代的信息,它有以下的屬性。

index【返回當(dāng)前是第幾個(gè)對(duì)象,從0開(kāi)始計(jì)數(shù)】

count【已經(jīng)遍歷多少個(gè)對(duì)象了,從1開(kāi)始計(jì)數(shù)】

first【是否是第一個(gè)】

last【是否是最后一個(gè)】

current【當(dāng)前被迭代的對(duì)象】

begin【開(kāi)始的位置】

end【最后的位置】

step【步長(zhǎng)】

    
    
        ${list}您的下標(biāo)是:${varStatus.index}

效果:

c:forTokens

該標(biāo)簽類(lèi)似于String類(lèi)的split()和for循環(huán)的一種集合

它與forEach標(biāo)簽非常相似,都有begin、end、step、items、var、varStatus屬性,不同的是forTokens標(biāo)簽的items屬性里面是字符串,這個(gè)字符串會(huì)被delims屬性的內(nèi)容分割成多個(gè)字符串!

    
        ${name}
    

效果圖:

c:import

import標(biāo)簽類(lèi)似于JSP行為和JSP指令<%include>

import標(biāo)簽的屬性:

url【指定要包含的路徑,Internet所有的url都可以】

context【訪問(wèn)同一個(gè)web容器的其他資源,以"/"開(kāi)頭】

var【保存導(dǎo)入的文件的內(nèi)容,以String類(lèi)型存儲(chǔ)】

socpe【保存的范圍,默認(rèn)是page】

charEncoding【字符編碼】

varReader【保存導(dǎo)入文件的內(nèi)容,以Reader類(lèi)型存儲(chǔ)】

當(dāng)然了,import標(biāo)簽功能更加更大!強(qiáng)大在哪里呢?import標(biāo)簽可以引入Internet網(wǎng)頁(yè)上的內(nèi)容,也就是說(shuō),csdn也可以引入進(jìn)來(lái)!

我們來(lái)用一下把!

    

我們一看,是沒(méi)有樣式的

打印csdn的源代碼

    
    
    CSDN的源碼是:




效果:

c:param

在JSP頁(yè)面進(jìn)行URL的相關(guān)操作時(shí),經(jīng)常要在URL地址后面附加一些參數(shù)。標(biāo)簽可以嵌套在標(biāo)簽內(nèi),為這些標(biāo)簽所使用的URL地址附加參數(shù)。

標(biāo)簽在為一個(gè)URL地址附加參數(shù)時(shí),將自動(dòng)對(duì)參數(shù)值進(jìn)行URL編碼,例如,如果傳遞的參數(shù)值為“中國(guó)”,則將其轉(zhuǎn)換為“%d6%d0%b9%fa”后再附加到URL地址后面,這也就是使用標(biāo)簽的最大好處。

c:url

url標(biāo)簽十分實(shí)用!在瀏覽器禁用Cookie的時(shí)候,我們之前學(xué)Servlet時(shí)解決辦法是:response.encodeURL()。url標(biāo)簽也可以實(shí)現(xiàn)這樣的功能,再配合param標(biāo)簽使用,就十分實(shí)用了!

我們配合param標(biāo)簽來(lái)使用一下吧

    
        
        
    
    
    我經(jīng)過(guò)了URL地址重寫(xiě)!

效果:

c:redirect

redirect標(biāo)簽用于實(shí)現(xiàn)Redirect功能,當(dāng)然了,此標(biāo)簽也能夠配合param標(biāo)簽使用!

簡(jiǎn)單使用一下,重定向到2.jsp,帶了一個(gè)參數(shù)

    
        
        
    

在2.jsp中獲取到參數(shù)

fmt標(biāo)簽庫(kù)

fmt標(biāo)簽庫(kù)也叫做國(guó)際化標(biāo)簽庫(kù)。這里就不詳細(xì)說(shuō)明了,等我講到Web 國(guó)際化的時(shí)候才講吧!

fn方法庫(kù)

fn方法庫(kù)也叫做EL函數(shù)庫(kù)、fn標(biāo)簽庫(kù)。這個(gè)在講解EL表達(dá)式的時(shí)候有詳細(xì)的說(shuō)明,可轉(zhuǎn)移到我EL表達(dá)式的博文中!

如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號(hào):Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68458.html

相關(guān)文章

  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

    KevinYan 評(píng)論0 收藏0
  • JavaWEB開(kāi)發(fā)11——JSP

    摘要:出現(xiàn)的目的同一樣也是要提到頁(yè)面中的腳本代碼。標(biāo)準(zhǔn)標(biāo)準(zhǔn)標(biāo)簽庫(kù)有個(gè)子庫(kù),但隨著發(fā)展,目前常使用的是他的核心庫(kù)標(biāo)簽庫(kù)標(biāo)簽庫(kù)的前綴下載與導(dǎo)入下載從的網(wǎng)站下載的包。 一、JSP技術(shù)1.jsp腳本和注釋jsp腳本:1) ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部2) ----- 會(huì)被翻譯成service方法內(nèi)部out.print()3) ---- 會(huì)被翻譯成servlet的成員的...

    beita 評(píng)論0 收藏0
  • JSTL

    摘要:關(guān)于對(duì)本次學(xué)習(xí)的進(jìn)行總結(jié)下載在中,直接搜索,,找到下載量最高的,下載版本。設(shè)置循環(huán)變量到幾結(jié)束。設(shè)置步長(zhǎng)等同與中的,或。格式化數(shù)字保留小數(shù)點(diǎn)后位,它會(huì)四舍五入如果不足位,以補(bǔ)位保留小數(shù)點(diǎn)后位,它會(huì)四舍五入如果不足位,不補(bǔ)位 關(guān)于對(duì)本次學(xué)習(xí)的JSTL進(jìn)行總結(jié) 下載 在mvnrepository中,直接搜索jstl,,找到下載量最高的,下載1.2版本。 showImg(https://s...

    wangxinarhat 評(píng)論0 收藏0
  • JSP第四篇【EL表達(dá)式介紹、獲取各類(lèi)數(shù)據(jù)、11個(gè)內(nèi)置對(duì)象、執(zhí)行運(yùn)算、回顯數(shù)據(jù)、自定義函數(shù)、fn方法

    什么是EL表達(dá)式? 表達(dá)式語(yǔ)言(Expression Language,EL),EL表達(dá)式是用${}括起來(lái)的腳本,用來(lái)更方便的讀取對(duì)象! EL表達(dá)式主要用來(lái)讀取數(shù)據(jù),進(jìn)行內(nèi)容的顯示! 為什么要使用EL表達(dá)式? 為什么要使用EL表達(dá)式,我們先來(lái)看一下沒(méi)有EL表達(dá)式是怎么樣讀取對(duì)象數(shù)據(jù)的吧! 在1.jsp中設(shè)置了Session屬性 向session設(shè)置一個(gè)屬性 在2...

    flyer_dev 評(píng)論0 收藏0
  • JSP第六篇【自定義標(biāo)簽之傳統(tǒng)標(biāo)簽

    摘要:首先我們來(lái)看一下接口的源碼上面程序的執(zhí)行流程引擎遇到自定義標(biāo)簽,首先創(chuàng)建標(biāo)簽處理器類(lèi)的實(shí)例對(duì)象。當(dāng)容器執(zhí)行到自定義標(biāo)簽的結(jié)束標(biāo)記時(shí),調(diào)用方法。 為什么要使用自定義標(biāo)簽? JSTL標(biāo)簽庫(kù)只提供了簡(jiǎn)單的輸出等功能,沒(méi)有實(shí)現(xiàn)任何的HTML代碼封裝,并且某些復(fù)雜類(lèi)型轉(zhuǎn)換,或者邏輯處理的時(shí)候,JSTL標(biāo)簽庫(kù)完成不了,需要自定義標(biāo)簽! 編寫(xiě)自定義標(biāo)簽的步驟: 編寫(xiě)一個(gè)實(shí)現(xiàn)Tag接口的Java類(lèi)【...

    songze 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<