トップ 一覧 ping 検索 ヘルプ RSS ログイン

9.3 coreタグライブラリからJSTLを使用の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!ある設計目標のもと、coreタグライブラリから適当な JSP Standard Tag Library (JSTL v1.1)のタグを使用する

JSTL
# Core: http://java.sun.com/jsp/jstl/core
# XML: http://java.sun.com/jsp/jstl/xml
# Internationalization: http://java.sun.com/jsp/jstl/fmt
# SQL: http://java.sun.com/jsp/jstl/sql
# Functions: http://java.sun.com/jsp/jstl/functions

!!JSTLの利用
,jarファイル,役割
,jstl.jar,ライブラリのAPIクラス
,standard.jar,ライブラリの実装クラス

__Tomcat 5.5 での上記jarファイル格納場所__
 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\jsp-examples\WEB-INF\lib

*配備記述子を編集する必要はない
*サーブレットコンテナが自動的に見つける
*JSPにてtaglibディレクティブの宣言は必要

::JSTLの詳細情報は、以下のライブラリを確認する!!
{{ref_image standard.jpg}}
{{ref_image jstl02.JPG}}
standard.jar の META-INF に tldファイルが含まれている


__taglibディレクティブ__
 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

!!タグ
{{ref c.tld}}
,タグ,内容
,<c:catch>,発生したThrowableをキャッチ
,<c:out>,ページへ出力
,<c:set>,EL式の結果をスコープに格納する
,<c:remove>,スコープから属性を削除する
,<c:chose>,<c:when><c:otherwise>とともに利用し、相互に排他的な条件文を記述する
,<c:if>,条件文を記述する。条件が真ならボディ部分を実行する
,<c:forEach>,繰り返し、コレクションメンバの繰り返し
,<c:forTokens>,デリミタで文字列を分割
,<c:url>,パラメータを含む、URLを生成する
,<c:import>,webアプリケーションの外部のコンテンツにもアクセス
,<c:redirect>,ブラウザにリダイレクトを指示

::<c:catch>

 <c:catch var="e">
   <% int num = Integer.parseInt("NUMBER"); // 例外を発生させる %>
 </c:catch>
 例外 : ${pageScope.e.message}

::<c:out>
 <%
  Date now = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat();
  sdf.applyPattern("yyyy/MM/dd"); 
  pageContext.setAttribute("today", sdf.format(now));               
  
  sdf.applyPattern("HH"); 
  pageContext.setAttribute("hour",  sdf.format(now));               
 %>
 <c:out value="${today}" />&nbsp;<c:out value="${hour}" />時

::<c:choose>
 <c:choose>
   <c:when test="${5 <= hour && hour < 12}">
     朝です。おはよう
   </c:when>
   <c:when test="${12 <= hour && hour < 17}">
     昼です。こんにちは
   </c:when>
   <c:when test="${17 <= hour && hour <= 23}">
     夜です。こんばんは
   </c:when>
   <c:otherwise>
     いらっしゃい 
   </c:otherwise>
 </c:choose>

::<c:if>
 <c:if test="${hour % 2 == 0}">
   今は偶数時間ですね。
 </c:if>
 <c:if test="${hour % 2 != 0}">
   今は奇数時間ですね。
 </c:if>

::<c:forEach>
 <select>
   <c:forEach var="i" begin="0" end="23" step="1">
     <option value="${i}">${i}</option>
   </c:forEach>
 </select>時
 
 <%
   // コレクションも利用可能
   List dummyList = new ArrayList();
   dummyList.add("DUMMY 1");
   dummyList.add("DUMMY 2");
   dummyList.add("DUMMY 3");
   pageContext.setAttribute("dummy", dummyList);
 %>
        
 <select>
   <c:forEach var="itm" items="${dummy}">
     <option><c:out value="${itm}" /></option>
   </c:forEach>        
 </select>

::<c:forTokens>
 <table border="1">        
   <tr>
     <th>年</th><th>月</th><th>日</th>
   </tr>
   <tr>
     <c:forTokens delims="/" var="dt" items="${today}" >
       <td>${dt}</td>
     </c:forTokens>        
   </tr>
 </table>    


::<c:set>
 <c:set var="sixhourslater" value="${(hour + 6) mod 24}" />
 今から6時間後は、<c:out value="${sixhourslater}" />時です

::<c:url>
 <c:url value="/jsp/Section7_1.jsp" var="sec7_1">
   <c:param name="param1" value="param1_1"/>
   <c:param name="param1" value="param1_2"/>
 </c:url>
 <a href="${sec7_1}">Section 7.1</a> 定義済み変数にアクセスするELコードを書く

::<c:import>
 <c:import url="/jsp/Section7_1.jsp">
   <c:param name="param1" value="param1_1"/>
   <c:param name="param1" value="param1_2"/>
 </c:import>

::<c:redirect>
 <c:redirect url="/jsp/Section7_1.jsp">
   <c:param name="param1" value="param1_1"/>
   <c:param name="param1" value="param1_2"/>
 </c:redirect>

----
{{amazon 1932394389}}
[SCWCD Exam Study Kit: Java Web Component Developer Certification (ペーパーバック)|http://www.amazon.co.jp/dp/1932394389?tag=typea09-22&link_code=as3&creativeASIN=1932394389&creative=3999&camp=767]