JSPは使ってはいけない、ELだけでは何もできないということで、さらにJSTLという拡張タグライブラリが作られました。
JakartaTaglibsというタグライブラリが一般的に使われているのでそれを使ってみましょう。
何故か最初から入っていないのでダウンロードしてくる必要があります。
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi
解凍したら、中に入っているlib/jstl.jarとlib/standard.jarを、WEB-INF/libディレクトリにコピーします。
その後、タグライブラリを使用するJSPに
<%@taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
と書くと、JSPでライブラリを使用することができます。
何故実際にライブラリが入っている場所ではなくて変なURLを書かねばならないのかはまたいつか。
とりあえず使ってみましょう。
<c:out value="あいうえお">
ただでさえ<%out.println>、<%=>、${}と同じようなものがいっぱいあるのにまた増えるの?
また増えました。
特徴は
<c:out value="${sessionScope.data1}" default="データがありません" escapeXml=true>
というふうに何も無かった場合のデフォルトを設定できることと、HTMLタグのエスケープができることです。
これだけやってようやくhtmlspecialcharsに肩を並べることができました。
<c:set var="data2" value="<b>value2</>" scope="page">
setAttributeと何がちがうの?
さあ?
<c:import url="include.jsp" context="/example2">
<%@include file %><jsp:include page>があるのにまた増えました。
上記と違う点は、別のコンテキストに存在するJavaアプリケーションを取り込めることです。
もっともそんなことをしなければならない時点で設計を失敗しているわけですが。
以下は選択及び繰り返し処理の例です。
<c:forEach items="[1,2,3,4,5,6]" var="var" varStatus="varStatus"> |
Javaに限りませんが、Webプログラミングは、デザインからロジックを排除して排除して、その結果何もできなくなるのでこうやってスクリプトっぽいことを追加して、それでまたロジックがデザインに入り込んでくる、そんなことを何度も繰り返しています。
JSTLもまたそのような道に入り込んでいるように見えます。