1. 程式人生 > >JavaWeb系列之十(jstl)

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.案例的使用
    註冊