亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

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

2019-11-11 04:32:01
字體:
來源:轉載
供稿:網友

什么是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"); %> //<c:out/>標簽支持標簽體,default屬性上的數據可以寫在標簽體中 //<c:out value="${name}" escapeXml="true">您要的數據找不著</c:out> <c:out value="${name}" default="您要的數據找不著" escapeXml="true"/>我們發現上面的代碼實現的效果和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

<c:set var="name" value="fucheng" scope="page"/> ${name}效果:

當然了,set標簽也支持標簽體,value的值可以寫在標簽體里邊 <c:set var="name" scope="page"> zhongfucheng </c:set>使用var屬性和scope屬性實現計數器 <%--由于下面變量需要做加法運算,所以要定義出來,不然服務器是不知道我的變量是Integer類型的--%> <% Integer sessionCount = 0; Integer applicationCount = 0; %> <c:set var="sessionCount" value="${sessionCount+1}" scope="session"/> <c:set var="applicationCount" value="${applicationCount+1}" scope="application"/>效果:

使用target屬性

使用target屬性與之配對的是property屬性,target屬性只能操作JavaBean或Map對象,property就是對應的成員變量或key了。。既然target屬性操作的是JavaBean或Map對象,那么一定是通過EL表達式來獲取到對象了。taget屬性如果獲取不到數據會拋出異常!使用target屬性就一定沒有scope屬性(scope屬性代表的是保存范圍,target的值都是獲取來的,難道你還能改變人家的范圍?) <%--創建出JavaBean對象,設置為session范圍的屬性--%> <jsp:useBean id="person" class="domain.Person" scope="session"/> <%--獲取到person對象,設置age屬性的值為32--%> <c:set target="${person}" property="age" value="32"/> ${person.age}效果:

<c:remove/>

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

下面簡單來測試一下吧: <%--創建出JavaBean對象,設置為session范圍的屬性--%> <jsp:useBean id="person" class="domain.Person" scope="session"/> <%--獲取到person對象,設置age屬性的值為32--%> <c:set target="${person}" property="age" value="32"/> ${person.age} <br> <%--刪除session屬性--%> <c:remove var="person" scope="session"></c:remove> ${person.age==null?"存在session的person對象被刪除了!":"我還在呢!"}效果:

<c:catch/>

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

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

<%--創建出JavaBean對象,設置為session范圍的屬性--%> <jsp:useBean id="person" class="domain.Person" scope="session"/> <c:catch var="message"> <%--target屬性只能是EL表達式,現在我是字符串,獲取不到對象,肯定會拋出異常的!--%> <c:set target="person" property="age" value="32"/> </c:catch> ${message}效果:

<c:if/>

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

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

根據傳遞過來的參數的不同顯示不同的頁面! <%--如果帶過來的名字是zhongfucheng,那么可以登陸--%> <c:if test="${param.name=='zhongfucheng'}"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="passWord" name="password"><br> <input type="submit" value="登陸"> </c:if> <%--如果帶過來的名字是ouzicheng,那么就是注冊--%> <c:if test="${param.name=='ouzicheng'}"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" value="注冊"> </c:if>注意地址欄的參數!


<c:choose>

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

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

<c:choose> <c:when test="${param.name=='zhongfucheng'}"> 你好啊,zhongfucheng </c:when> <c:when test="${param.name=='ouzicheng'}"> 你好啊,ouzicheng </c:when> <c:otherwise> 你是誰?。縿e隨便過來! </c:otherwise> </c:choose>效果:


<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:當前迭代到的元素 <c:forEach var="list" items="${list}" > ${list}<br> </c:forEach>效果:

遍歷Map對象有稍微地不一樣,我們來看一下,var屬性保存的不是每個迭代的對象,而是Map.Entry。 <% Map map = new HashMap(); map.put("1", "zhongfucheng"); map.put("2", "xiaohong"); map.put("3", "xiaoming"); session.setAttribute("map",map); %> <c:forEach var="me" items="${map}" > ${me.key} ${me.value}<br> </c:forEach>

begin默認從0開始、end默認為集合的最后一個元素、step默認為1

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

index【返回當前是第幾個對象,從0開始計數】count【已經遍歷多少個對象了,從1開始計數】first【是否是第一個】last【是否是最后一個】current【當前被迭代的對象】begin【開始的位置】end【最后的位置】step【步長】 <c:forEach var="list" items="${list}" varStatus="varStatus" > ${list}您的下標是:${varStatus.index}<br> </c:forEach>效果:


<c:forTokens/>

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

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

<c:forTokens items="zhongfucheng,ouzicheng,xiaoming,xiaohong" var="name" delims="," > ${name} </c:forTokens>效果圖:


<c:import/>

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

import標簽的屬性:

url【指定要包含的路徑,Internet所有的url都可以】context【訪問同一個web容器的其他資源,以”/”開頭】var【保存導入的文件的內容,以String類型存儲】socpe【保存的范圍,默認是page】charEncoding【字符編碼】varReader【保存導入文件的內容,以Reader類型存儲】

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

我們來用一下把! <c:import url="http://www.csdn.net" charEncoding="UTF-8" />我們一看,是沒有樣式的

打印csdn的源代碼: <c:import url="http://www.csdn.net" charEncoding="UTF-8" var="net"/> CSDN的源碼是:<br><br><br><br><br> <c:out value="${net}" escapeXml="true"></c:out>效果:


<c:param/>

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

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


<c:url/>

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

我們配合param標簽來使用一下吧! <c:url value="2.jsp" var="url"> <c:param name="name" value="中國!"> </c:param> </c:url> <a href="${url}">我經過了URL地址重寫!</a>效果:


<c:redirect/>

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

簡單使用一下,重定向到2.jsp,帶了一個參數: <c:redirect url="2.jsp" > <c:param name="name" value="zhongfucheng"> </c:param> </c:redirect>在2.jsp中獲取到參數


fmt標簽庫

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

fn方法庫

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


上一篇:JSP

下一篇:jsp9大內置對象詳解

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类交人妖| 欧美极品少妇xxxxⅹ喷水| 日韩精品在线看| 国产成人精品综合久久久| 国产精品专区h在线观看| 自拍偷拍亚洲精品| 欧美高清在线视频观看不卡| 欧美精品做受xxx性少妇| 国产精品va在线播放我和闺蜜| 成人黄色午夜影院| 国产男女猛烈无遮挡91| 在线观看成人黄色| 欧美日本中文字幕| 国产综合久久久久久| 亚洲japanese制服美女| 国产精品欧美风情| 久久国产精品视频| 亚洲欧美日本另类| 色哟哟网站入口亚洲精品| 国产69精品久久久久9999| 97碰在线观看| 亚洲国产成人在线播放| 欧美亚洲成人免费| 久久天天躁狠狠躁夜夜av| 精品视频在线播放色网色视频| 亚洲欧美一区二区精品久久久| 国产精品草莓在线免费观看| 日韩电影中文字幕在线| 不卡在线观看电视剧完整版| 懂色av一区二区三区| 亚洲综合色激情五月| www高清在线视频日韩欧美| 久久九九免费视频| 久久综合国产精品台湾中文娱乐网| 欧美裸体xxxx极品少妇| 91精品久久久久久久久久久| 亚洲精品一区在线观看香蕉| 色妞在线综合亚洲欧美| 久久偷看各类女兵18女厕嘘嘘| 亚洲高清色综合| 欧美大片在线免费观看| 综合网日日天干夜夜久久| 国产精品日本精品| 日韩视频免费中文字幕| 国产日本欧美一区| 国产精品久久久久福利| 久久久久久久爱| 国产精品亚洲网站| 疯狂蹂躏欧美一区二区精品| 国产香蕉97碰碰久久人人| 欧美在线性视频| 日韩一区二区三区xxxx| 欧美一区二区三区艳史| 国内精品久久久久久| 欧美三级欧美成人高清www| 欧美国产乱视频| 国产精品人成电影| 欧美小视频在线观看| 欧美激情一级欧美精品| 国产精品一区二区三区毛片淫片| 中文字幕日韩欧美在线视频| 亚洲理论在线a中文字幕| 欧美三级欧美成人高清www| 国产一区二区三区在线| 日韩在线视频观看| 日韩三级成人av网| 青青草原成人在线视频| 国产精品综合不卡av| 亚洲欧美一区二区三区四区| 亚洲欧美日本另类| 国产香蕉精品视频一区二区三区| 青青久久av北条麻妃海外网| 欧美日韩一二三四五区| 国产日韩精品一区二区| 欧美一级在线亚洲天堂| 亚洲天堂影视av| 亚洲美女视频网站| 欧美一级大片视频| 欧美激情a∨在线视频播放| 欧美一级大片在线免费观看| 欧美一级淫片aaaaaaa视频| 中文字幕亚洲综合久久筱田步美| 国产成人jvid在线播放| 欧美黄色片免费观看| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲a级在线观看| 欧美激情乱人伦一区| 亚洲精品99久久久久| 欧美电影在线播放| 欧美激情视频播放| 欧美成年人视频网站欧美| 麻豆成人在线看| 成人午夜高潮视频| 国产精品一区二区性色av| 久久久久日韩精品久久久男男| 久久久久久成人| 日韩av中文字幕在线免费观看| 欧美第一黄网免费网站| 亚洲色图50p| 国产欧美婷婷中文| 久久综合国产精品台湾中文娱乐网| 精品国产拍在线观看| 久久精品成人动漫| 精品国产乱码久久久久久虫虫漫画| 日本免费一区二区三区视频观看| 国产精品电影一区| 成人在线精品视频| 亚洲精品aⅴ中文字幕乱码| 国产亚洲精品综合一区91| 欧美专区国产专区| 日韩成人激情在线| 久久久久久久成人| 欧美激情视频一区二区三区不卡| 国产精品国产自产拍高清av水多| 久精品免费视频| 日韩免费电影在线观看| 日本久久久久久久久久久| 69精品小视频| 亚洲国产精彩中文乱码av| 国产精品白嫩初高中害羞小美女| 最近2019年中文视频免费在线观看| 亚洲成av人乱码色午夜| 亚洲一区二区三区在线免费观看| 欧美—级a级欧美特级ar全黄| 少妇精69xxtheporn| 欧美午夜精品久久久久久浪潮| 国产日韩欧美在线看| 性色av一区二区三区| 欧美大片在线看| 日韩av不卡电影| 精品福利在线看| 欧美黑人巨大xxx极品| 欧美在线观看网站| 欧美在线视频观看| 亚洲国产美女久久久久| 亚洲综合日韩中文字幕v在线| 国产精品美女www| 精品久久久久久亚洲国产300| 日韩大片在线观看视频| 黄色91在线观看| 日本高清不卡在线| 欧美精品制服第一页| 亚洲第一视频网站| 97avcom| 欧美性一区二区三区| 欧美在线视频在线播放完整版免费观看| 91精品久久久久| 日韩欧美亚洲范冰冰与中字| 亚洲欧美在线磁力| 亚洲第一网中文字幕| 亚洲精品99久久久久| 大胆人体色综合| 日韩经典一区二区三区| 91在线观看免费高清| 久久国产精品偷| 97精品欧美一区二区三区| 亚洲精品自拍第一页| 97视频免费在线观看| 欧美有码在线观看| 欧美激情视频一区二区三区不卡| 91久久综合亚洲鲁鲁五月天| 亚洲精品女av网站| 亚洲精品中文字幕av| 欧美性猛交xxxx黑人猛交|