国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JSP第五篇【JSTL的介紹、core標簽庫、fn方法庫、fmt標簽庫】

solocoder / 1915人閱讀

摘要:標簽在為一個地址附加參數時,將自動對參數值進行編碼,例如,如果傳遞的參數值為中國,則將其轉換為后再附加到地址后面,這也就是使用標簽的最大好處。

什么是JSTL

JSTL全稱為 JSP Standard Tag Library 即JSP標準標簽庫

JSTL作為最基本的標簽庫,提供了一系列的JSP標簽,實現了基本的功能:集合的遍歷、數據的輸出、字符串的處理、數據的格式化等等!

為什么要使用JSTL

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

Scriptlet的可讀性,維護性,重用性都十分差!JSTL與HTML代碼十分類似,遵循著XML標簽語法,使用JSTL讓JSP頁面顯得整潔,可讀性非常好,重用性非常高,可以完成復雜的功能!

在JSP中不推薦使用scriptlet輸出,推薦使用JSP標簽。

使用JSTL標簽庫步驟:

導入jstl.jar和standard.jar開發包

在JSP頁面中用tablib指令引入需要用到的JSTL標簽

core標簽庫

core標簽庫是JSTL的核心標簽庫,實現了最基本的功能:流程控制、迭代輸出等操作

core標簽庫的前綴一般是c

c:out

簡單使用一下

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

    

    

我們發現上面的代碼實現的效果和EL表達式是一樣的它出色的地方就多了兩個屬性,default和escapeXml屬性。如果我們用到這兩個屬性,我們就使用該標簽,如果沒有用到這兩個屬性就用EL表達式就可以了。

c:set

該標簽有5個屬性,用起來有稍微有些復雜了!現在要記住的就是:var屬性操作的是Integer、Double、Float、String等類型的數據,target屬性操作的是JavaBean或Map對象的數據,scope代表的是Web域,value是值,property是對象的屬性

使用var屬性

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

下面的代碼流程是這樣的:創建了一個name的變量,設置的值為zhongfucheng,范圍是page

    
    
    ${name}

效果:

當然了,set標簽也支持標簽體,value的值可以寫在標簽體里邊

    
        zhongfucheng
    

使用var屬性和scope屬性實現計數器


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

效果:

使用target屬性

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

既然target屬性操作的是JavaBean或Map對象,那么一定是通過EL表達式來獲取到對象了。taget屬性如果獲取不到數據會拋出異常!使用target屬性就一定沒有scope屬性(scope屬性代表的是保存范圍,target的值都是獲取來的,難道你還能改變人家的范圍?)

    <%--創建出JavaBean對象,設置為session范圍的屬性--%>
    
    
    <%--獲取到person對象,設置age屬性的值為32--%>
    
    
    ${person.age}

效果:

c:remove

remove標簽就相當簡單了,只有var和scope屬性,代表的是刪除域范圍的屬性

下面簡單來測試一下吧:

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

效果:

c:catch

該標簽主要用來處理程序中產生的異常。

catch標簽也十分簡單,只有一個var屬性,var屬性封裝了異常的信息!

    <%--創建出JavaBean對象,設置為session范圍的屬性--%>
    
    
    
    
        <%--target屬性只能是EL表達式,現在我是字符串,獲取不到對象,肯定會拋出異常的!--%>
        
    
    
    
    ${message}

效果:

c:if

JSTL提供了if標簽完成分支語句的實現,test屬性是不可或缺的

var和scope屬性我看來好像沒什么用的(保存執行結果有什么用?)

根據傳遞過來的參數的不同顯示不同的頁面!

    <%--如果帶過來的名字是zhongfucheng,那么可以登陸--%>
    
        用戶名:
密碼:
<%--如果帶過來的名字是ouzicheng,那么就是注冊--%> 用戶名:
密碼:

注意地址欄的參數!

c:choose

if標簽沒有else的功能,如果需要類似于java中的if else流程就需要使用choose標簽。

choose標簽需要聯合when和otherwise標簽一起使用!

    
        
            你好啊,zhongfucheng
        
        
            你好啊,ouzicheng
        
        
            你是誰啊?別隨便過來!
        
    

效果:

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);
    %>

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

    
        ${list}

效果:

遍歷Map對象有稍微地不一樣,我們來看一下,var屬性保存的不是每個迭代的對象,而是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默認從0開始、end默認為集合的最后一個元素、step默認為1

varStatus代表著當前對象被迭代的信息,它有以下的屬性

index【返回當前是第幾個對象,從0開始計數】

count【已經遍歷多少個對象了,從1開始計數】

first【是否是第一個】

last【是否是最后一個】

current【當前被迭代的對象】

begin【開始的位置】

end【最后的位置】

step【步長】

    
    
        ${list}您的下標是:${varStatus.index}

效果:

c:forTokens

該標簽類似于String類的split()和for循環的一種集合

它與forEach標簽非常相似,都有begin、end、step、items、var、varStatus屬性,不同的是forTokens標簽的items屬性里面是字符串,這個字符串會被delims屬性的內容分割成多個字符串!

    
        ${name}
    

效果圖:

c:import

import標簽類似于JSP行為和JSP指令<%include>

import標簽的屬性:

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

context【訪問同一個web容器的其他資源,以"/"開頭】

var【保存導入的文件的內容,以String類型存儲】

socpe【保存的范圍,默認是page】

charEncoding【字符編碼】

varReader【保存導入文件的內容,以Reader類型存儲】

當然了,import標簽功能更加更大!強大在哪里呢?import標簽可以引入Internet網頁上的內容,也就是說,csdn也可以引入進來!

我們來用一下把!

    

我們一看,是沒有樣式的

打印csdn的源代碼

    
    
    CSDN的源碼是:




效果:

c:param

在JSP頁面進行URL的相關操作時,經常要在URL地址后面附加一些參數。標簽可以嵌套在標簽內,為這些標簽所使用的URL地址附加參數。

標簽在為一個URL地址附加參數時,將自動對參數值進行URL編碼,例如,如果傳遞的參數值為“中國”,則將其轉換為“%d6%d0%b9%fa”后再附加到URL地址后面,這也就是使用標簽的最大好處

c:url

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

我們配合param標簽來使用一下吧

    
        
        
    
    
    我經過了URL地址重寫!

效果:

c:redirect

redirect標簽用于實現Redirect功能,當然了,此標簽也能夠配合param標簽使用!

簡單使用一下,重定向到2.jsp,帶了一個參數

    
        
        
    

在2.jsp中獲取到參數

fmt標簽庫

fmt標簽庫也叫做國際化標簽庫。這里就不詳細說明了,等我講到Web 國際化的時候才講吧!

fn方法庫

fn方法庫也叫做EL函數庫、fn標簽庫。這個在講解EL表達式的時候有詳細的說明,可轉移到我EL表達式的博文中

如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章的同學,可以關注微信公眾號:Java3y

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68458.html

相關文章

  • Java3y文章目錄導航

    摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...

    KevinYan 評論0 收藏0
  • JavaWEB開發11——JSP

    摘要:出現的目的同一樣也是要提到頁面中的腳本代碼。標準標準標簽庫有個子庫,但隨著發展,目前常使用的是他的核心庫標簽庫標簽庫的前綴下載與導入下載從的網站下載的包。 一、JSP技術1.jsp腳本和注釋jsp腳本:1) ----- 內部的java代碼翻譯到service方法的內部2) ----- 會被翻譯成service方法內部out.print()3) ---- 會被翻譯成servlet的成員的...

    beita 評論0 收藏0
  • JSTL

    摘要:關于對本次學習的進行總結下載在中,直接搜索,,找到下載量最高的,下載版本。設置循環變量到幾結束。設置步長等同與中的,或。格式化數字保留小數點后位,它會四舍五入如果不足位,以補位保留小數點后位,它會四舍五入如果不足位,不補位 關于對本次學習的JSTL進行總結 下載 在mvnrepository中,直接搜索jstl,,找到下載量最高的,下載1.2版本。 showImg(https://s...

    wangxinarhat 評論0 收藏0
  • JSP第四篇【EL表達式介紹、獲取各類數據、11個內置對象、執行運算、回顯數據、自定義函數、fn方法

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

    flyer_dev 評論0 收藏0
  • JSP第六篇【自定義標簽之傳統標簽

    摘要:首先我們來看一下接口的源碼上面程序的執行流程引擎遇到自定義標簽,首先創建標簽處理器類的實例對象。當容器執行到自定義標簽的結束標記時,調用方法。 為什么要使用自定義標簽? JSTL標簽庫只提供了簡單的輸出等功能,沒有實現任何的HTML代碼封裝,并且某些復雜類型轉換,或者邏輯處理的時候,JSTL標簽庫完成不了,需要自定義標簽! 編寫自定義標簽的步驟: 編寫一個實現Tag接口的Java類【...

    songze 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<