java web jstl標簽庫

jsp頁面是為了顯示數(shù)據(jù)屏镊,如果嵌入java代碼,就會使得可讀性差痰腮,java代碼也難以重用和維護而芥。為了不在jsp頁面里面寫java腳本,我們使用了jsp內(nèi)置的行為膀值、指令棍丐,也使用el表達式來獲取對象和值,但是這些并沒有提供循環(huán)遍歷的功能沧踏,所以我們就需要用到j(luò)stl標簽庫歌逢。

引入方式

要使用jstl標簽庫,我們需要用到tablib指令引入翘狱。

core標簽庫

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

引入這個標簽庫秘案,我們能使用:<c:out/>、<c:set/>、<c:remove/>阱高、<c:if test=""/>赚导、<c:choose />、<c:forTokens />赤惊、<c:catch /> 吼旧、<c:url />、 <c:redirect />荐捻、<c:forEach/>等標簽黍少。

  1. <c:out/>標簽
    <c:out value="" default="" escapeXml />
    作用:將指定內(nèi)容輸出到瀏覽器,默認支持el表達式,

value:輸出的值处面,可以為EL表達式
default:如果value屬性的值不存在厂置,會輸出default屬性值
excapeXml:如果為true,則會為value中的特殊字符進行轉(zhuǎn)義魂角,默認為true

<c:out value="${user.name}" default="不存在這個值" /> <br/>
<c:out value="${empty user}" /> <br/>
<c:out value="字符串" /> <br/>
<c:out value="<b>不轉(zhuǎn)義</b>" escapeXml="false"/> <br/>
image.png

第一行不存在user.name 昵济, 所以顯示的是default里面的內(nèi)容;
第四行選擇不轉(zhuǎn)義野揪,所以<b></b>這些字符沒有顯示访忿,并且內(nèi)容加粗了

  1. <c:set/>標簽
  • <c:set var="" value="" [scope="{ page|request|session|application }"]></c:set>
    這種var不能接受EL表達式箫爷,只能是字符
  • <c:set target="" property="" value="" />
    target:跟var類似痴荐,但是它只能夠接受EL表達式,可以是一個對象踪少,一個map等挣惰,和var進行互補
    property:對象中的屬性名 
    value:屬性賦值
<c:set var="hello" value="hello page" scope="page"></c:set>
<c:set var="hello" value="hello request" scope="request"></c:set>
<c:out value="${hello}"></c:out><br/>
<c:out value="${requestScope.hello}"></c:out><br/>

<jsp:useBean id="user" class="bean.user" scope="page"/>
<c:set target="${user}" property="name" value="hello world"></c:set>
<c:out value="${user.name}"></c:out><br/>

image.png
  1. <c:remove />標簽
    <c:remove var="" scope=""/>
    移除page域中的hello卧斟,顯示時依次找page、request憎茂、session珍语、application中的hello,所以最后顯示的是request中的hello
<c:remove var="hello" scope="page"/>
<c:out value="${hello}"></c:out><br/>`
image.png
  1. <c:if test=""/>標簽
<c:if test="${not empty user.name }">
<c:out value="username: ${user.name}"></c:out><br/>
</c:if>
image.png
  1. <c:choose />標簽
    <c:choose />相當于switch的作用
    <c:when />相當于case的作用
    <c:otherwise />相當于default的作用
<c:set target="${user }" property="age" value="15"/>
<c:choose>
    <c:when test="${user.age<10 }">小于10歲</c:when>
    <c:when test="${user.age<20 }">大于等于10歲小于20歲</c:when>
    <c:otherwise>大于等于20歲</c:otherwise>
</c:choose>
image.png
  1. <c:forTokens > 標簽
    將自定義字符串竖幔,按照指定字符進行分割板乙,并遍歷輸出
    items:自定義字符串
    delims:指定字符
    var:遍歷的變量名。
<c:forTokens items="lin-jia-qian" delims="-" var="s">
        ${s }<br/>
</c:forTokens>
image.png
  1. <c:catch > 標簽

相當于try catch

<c:catch var="e">
    <c:set target="cuowudefuzhi" property="hi" value="dfdvc"/>
</c:catch>
<c:if test="${not empty e }">
${e }<br/>
</c:if>
image.png
  1. <c:forEach/>標簽
    <c:forEach items="" var="" />
    items:需要遍歷的對象
    var:用于存放遍歷的每一項內(nèi)容拳氢,存放在page作用域募逞,只能在循環(huán)體中使用

普通for循環(huán):

<c:forEach var="num" begin="0" end="10" step="2">
    ${num }
</c:forEach>
image.png

forEach list集合:

<%
List<String> list=new ArrayList<String>();
list.add("item1");
list.add("item2");
list.add("item3");

pageContext.setAttribute("list", list);

%>

<c:forEach items="${list }" var="str" >
    ${str}<br/>
</c:forEach>

image.png

forEach map映射:

<%
  Map<String,String> map=new HashMap<String,String>();
  map.put("1","hello");
  map.put("2","world");
  pageContext.setAttribute("map", map);
%>
<c:forEach items="${map }" var="item">
    ${item.key }=${item.value }<br/>
</c:forEach>
image.png
  1. <c:url />標簽
    <c:url value="" var="" scope="" />
    value:要進行重寫的url
    var:如果寫了該變量,那么就會將其重寫后的url存入作用域中,默認是page馋评,以scope屬性值為準
    scope:作用域范圍凡辱,默認是page
<c:url value="/index.jsp" var="beanNameUrl" scope="page">
    <c:param name="userName" value="lin"></c:param>
</c:url>
<a href="${ beanNameUrl}">點擊跳轉(zhuǎn)</a>
image.png

這個可以用于瀏覽器把cookie功能關(guān)閉時傳遞sessionid。

  1. <c:redirect />標簽
<c:redirect url="/index.jsp">
</c:redirect>
  1. <c:import />標簽
    類似于JSP的include行為和include指令栗恩,JSTL也提供了include功能的標簽<c:import/>,不過import標簽功能更強大,甚至可以把Internet上的網(wǎng)頁包含進來磕秤。
<c:import url="http://www.baidu.com" charEncoding="utf-8"/>
fmt標簽庫

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
是一些輔助性功能標簽乳乌,就講解一個把,用的不多

fn方法庫

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
提供一些方法市咆,函數(shù)汉操,例如字符串查找,截取之類蒙兰。
必須在el表達式中使用
格式:fn:methodName()的格式磷瘤,比如:fn:contains()

1、fn:contains(string, substring)
如果參數(shù)string中包含參數(shù)substring搜变,返回true采缚。

2、fn:containsIgnoreCase(string, substring)
如果參數(shù)string中包含參數(shù)substring(忽略大小寫)挠他,返回true

3扳抽、fn:endsWith(string, suffix)
如果參數(shù) string 以參數(shù)suffix結(jié)尾,返回true殖侵。

4贸呢、fn:escapeXml(string)
將有特殊意義的XML (和HTML)轉(zhuǎn)換為對應(yīng)的XML character entity code,并返回拢军。

5楞陷、fn:indexOf(string, substring)
返回參數(shù)substring在參數(shù)string中第一次出現(xiàn)的位置。

6茉唉、fn:join(array, separator)
將一個給定的數(shù)組array用給定的間隔符separator串在一起固蛾,組成一個新的字符串并返回。

7赌渣、fn:length(item)
返回參數(shù)item中包含元素的數(shù)量魏铅。參數(shù)Item類型是數(shù)組、collection或者String坚芜。如果是String類型,返回值是String中的字符數(shù)览芳。

8、fn:replace(string, before, after)
返回一個String對象鸿竖。用參數(shù)after字符串替換參數(shù)string中所有出現(xiàn)參數(shù)before字符串的地方沧竟,并返回替換后的結(jié)果。

9缚忧、fn:startsWith(string, prefix)
如果參數(shù)string以參數(shù)prefix開頭悟泵,返回true。

10闪水、fn:substring(string, begin, end)
返回參數(shù)string部分字符串, 從參數(shù)begin開始到參數(shù)end位置糕非。

11、fn:substringAfter(string, substring)
返回參數(shù)substring在參數(shù)string中后面的那一部分字符串。

12朽肥、fn:substringBefore(string, substring)
返回參數(shù)substring在參數(shù)string中前面的那一部分字符串禁筏。

13、fn:toLowerCase(string)
將參數(shù)string所有的字符變?yōu)樾懞庹校⑵浞祷亍?/p>

14篱昔、fn:toUpperCase(string)
將參數(shù)string所有的字符變?yōu)榇髮懀⑵浞祷亍?/p>

15始腾、fn:trim(string)
去除參數(shù)string 首尾的空格州刽,并將其返回。

其他庫

除此之外浪箭,還有sql庫和xml庫穗椅,不過一般不會在里面用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市山林,隨后出現(xiàn)的幾起案子房待,更是在濱河造成了極大的恐慌,老刑警劉巖驼抹,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桑孩,死亡現(xiàn)場離奇詭異,居然都是意外死亡框冀,警方通過查閱死者的電腦和手機流椒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來明也,“玉大人宣虾,你說我怎么就攤上這事∥率” “怎么了绣硝?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長撑刺。 經(jīng)常有香客問我鹉胖,道長,這世上最難降的妖魔是什么够傍? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任甫菠,我火速辦了婚禮,結(jié)果婚禮上冕屯,老公的妹妹穿的比我還像新娘寂诱。我一直安慰自己,他們只是感情好安聘,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布痰洒。 她就那樣靜靜地躺著瓢棒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丘喻。 梳的紋絲不亂的頭發(fā)上音羞,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音仓犬,去河邊找鬼。 笑死舍肠,一個胖子當著我的面吹牛搀继,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翠语,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼叽躯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肌括?” 一聲冷哼從身側(cè)響起点骑,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谍夭,沒想到半個月后黑滴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡紧索,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年袁辈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珠漂。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡晚缩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出媳危,到底是詐尸還是另有隱情荞彼,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布待笑,位于F島的核電站鸣皂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滋觉。R本人自食惡果不足惜签夭,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椎侠。 院中可真熱鬧第租,春花似錦、人聲如沸我纪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至趟据,卻和暖如春券犁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汹碱。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工粘衬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咳促。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓稚新,卻偏偏與公主長得像,于是被迫代替她去往敵國和親跪腹。 傳聞我的和親對象是個殘疾皇子褂删,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法冲茸,內(nèi)部類的語法屯阀,繼承相關(guān)的語法,異常的語法轴术,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件难衰,本...
    java日記閱讀 3,449評論 0 13
  • JSP是在HTML文檔中嵌入java代碼的技術(shù),本質(zhì)上是一個servlet類膳音,因為在服務(wù)器端會被編譯為一個serv...
    shawXXQ閱讀 360評論 0 0
  • 很多剛開始做淘客的新手們經(jīng)常會遇到找產(chǎn)品的問題召衔,為什么我辛辛苦苦找的產(chǎn)品就推不出去呢?為什么我找的高傭產(chǎn)品祭陷,到最后...
    kimi小晨哥閱讀 547評論 0 0
  • 最近放假又趕上考試苍凛,都快忘了日記這茬了~ 又不開心了,╯^╰ 我總感覺歷史老師煩我兵志,高二的時候有一次上課醇蝴,我...
    唯左閱讀 79評論 0 0