JavaWeb系列之十(jstl)
1.jstl的一個簡介
使用方式:jsp裡面的指令taglib一起使用,替代頁面<%%>JavaServerPages Standard Tag Library
使用jstl,先匯入jar包
jstl的版本是1.0(版本使用於j2ee1.4時代,不能直接使用)1.1 1.2(差別不大)
jstl在jsp裡面引入標籤庫 <%@ taglib uri="標籤庫的路徑" prefix="" %>
找到standard.jar 下面,META-INF裡面找到c.tld fn.tld
c.tld裡面找到標籤庫,和函式庫,
可以用<c:>標籤庫
2.jstl的標籤
<c:out 屬性=“屬性值”>:向頁面輸出內容
三大屬性:value(向頁面輸出值,也可是輸出變數)
<c:out value="hahah"></c>
<c:set var="city" value="shan"><c:out value="${city}"><c:out>
default
<c:out value="${city}" default="nana"></c:out>取不到值得時候用預設值
escapeXml
<c:out value="<a href='we'>bb</a>" escapeXml="false">:不進行轉義,預設值是true
3.set標籤
向域物件裡面設定值
<c:set var="" value="" scape="page"></c:set>${pageScope.}
修改域物件釐米那的物件的屬性的值
4.removw標籤
移除域物件裡面的標籤
<c:remove var="itcast"/>
5.jstl的catch標籤
捕獲異常
<c:catch var="e">
<%
int b = 10/0;
%>
</c:catch>
${e.message }
6.if標籤
<c:set var="w" value="200"></c:set>
<c:if test="${w==200 }">
<h2>2000</h2>
</c:if>
<c:if test="${w!=200 }">
<h2>other</h2>
</c:if>
7.選擇語句
<c:choose>
<c:when test="${n==10 }">
<h1>10</h1>
</c:when>
<c:when test="${n==20 }">
<h1>10</h1>
</c:when>
</c:choose>
8.jstl的forTokens
用來分割標籤 屬性:items=“分割的是什麼字串”delims=“根據什麼來分割”var=“分割完叫什麼”
<c:forTokens items="a,b,c,d" delims="," var="mm">
${mm }
</c:forTokens>
9、jstl的forEach標籤的使用(**********今天最重要的標籤********)
獲取域物件裡面陣列
<c:forEach var="a" items="${arr1 }">
<h4>${a }</h4>
</c:forEach>
相當於java裡面增強for迴圈,items:要迴圈的是哪一個陣列;var:每次遍歷的值
獲取域物件裡面的集合(list 、 set 、 map)
使用jstl的foreach標籤獲取域物件裡面list集合裡面的值
<c:forEach var="l1" items="${list }">
<h3>${l1 }</h3>
</c:forEach>
使用jstl的foreach標籤獲取域物件裡面set集合裡面的值
<c:forEach var="s1" items="${set }">
${s1 }
</c:forEach>
使用jstl標籤獲取域物件裡面的map集合裡面的值
<%
Map map = new HashMap();
map.put("aa", "小師妹");
map.put("bb", "大師兄");
map.put("cc", "師父");
pageContext.setAttribute("map", map);
%>
<c:forEach var="m1" items="${map }">
<h3>${m1.key } , ${m1.value }</h3>
</c:forEach>
向域物件裡面放多個物件,通過foreach標籤獲取到多個物件的屬性的值
使用jstl的foreach標籤獲取域物件裡面多個物件的屬性的值
<%
Person p1 = new Person();
p1.setId("100");
p1.setName("小麗");
Person p2 = new Person();
p2.setId("200");
p2.setName("小紅");
Person p3 = new Person();
p3.setId("300");
p3.setName("小三");
//把多個物件放到域物件裡面
//首先先把這些物件放到一個集合裡面,一般使用list集合,然後把集合放到域物件裡面
List list = new ArrayList();
list.add(p1);
list.add(p2);
list.add(p3);
pageContext.setAttribute("list1", list);
%>
<c:forEach var="list1" items="${list1 }">
<h3>${list1.id } , ${list1.name }</h3>
</c:forEach>
10、jstl的foreach標籤的其他操作(看懂)
迴圈從1到10
<!-- 迴圈從1到10 -->
<!--
for(int i=1;i<=10;i++) {}
-->
<c:forEach var="i" begin="1" end="10" step="1">
${i }
</c:forEach>
實現從1加到100
<c:forEach var="b" begin="1" end="100" step="1">
<c:set var="sum" value="${sum+b }"></c:set>
</c:forEach>
${sum }
從100到200,每次加4,遇到第3個數變成紅色,其他的變成藍色
100(藍色) 104 108(紅) 112 116 120(紅)
從100到200,每次加4,遇到第3個數變成紅色,其他的變成藍色 -->
<c:forEach var="aa" begin="100" end="200" step="4" varStatus="hh">
<c:if test="${hh.count%3==0 }">
<font color="red">${aa }</font>
</c:if>
<c:if test="${hh.count%3!=0 }">
<font color="blue">${aa }</font>
</c:if>
</c:forEach>
===================================================
重點記住這些標籤 set標籤 if標籤 choose標籤 foreach標籤(最重要的標籤)
11.jstl的import,url,redirect,param
import:在jsp頁面中引入其他的jsp頁面
屬性context:專案名稱;url:寫頁面專案名稱後面的內容
<c:import url="/jstl/hello.jsp" context="/day12"></c:import>
url標籤:獲取url地址
屬性context:專案名稱; url:寫頁面專案名稱後面的內容
<c:redirect url="/jstl/hello.jsp" context="/day12"></c:redirect>
param:傳遞引數的使用,類似get提交,地址
redirect:重定向
12.JSTL中的常用的函式庫
如果想要使用el函式,匯入jar包,匯入函式庫
<%@ taglib uri="" prefix=""%>
13.自定義函式
${myfn:println("wedfd") }
開發步驟:
定義一個java的方法,這個方法必須是一個static的方法
第二步:建立一個函式庫,也就是一個tld標籤
第三步:引入類庫
第四步:重啟伺服器
14.自定義標籤
一般使用simpleTag介面完成自定義的標籤
使用介面需要把接口裡面的方法都實現
都使用SimpleTagSupport類實現自定義標籤
doTag()
setJspContext(JspContext pc)
setJspBody(JspFragment jspBody)
setParent(JspTag parent)
方法執行過程
<mycl:printl>
開發步驟:
第一步建立一個類:
15.jsp的開發模式
兩種:模型一:jsp+javabean缺點在jsp裡面寫大量的程式碼,java和html混用
模型二:也叫mvc,只負責自己的事情
m:model使用javabean
v:view使用jsp:負責顯示資料
c:controller,使用技術是servlet
通過c控制什麼m顯示到什麼v裡面
16.案例的使用
註冊