JSTL を使うには
- Standard-1.1 Taglib
- http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html
ダウンロードして展開すると、lib ディレクトリに jstl.jar と standard.jar が入っている。これを自分の WEB-INF/lib にコピーする。
タグのリファレンスは入っていないので、こちらを参照。
- JavaServer Pages Standard Tag Library 1.1 Tag Reference
- http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html
JSTL で DB を使う場合の設定
JSTL の sql ライブラリで DB に接続する場合、接続先は JNDI 名で書いておく。
<sql:query var="rs" dataSource="jdbc/mydb"> select * from mytable </sql:query>
その JNDI 名を実際の DB に関連付けるには、Tomcat の場合、server.xml に記述を追加する。Context 要素の中に Resource 要素を追加すればいいんだけど、初期状態の server.xml には Context がない。Host 要素の下に Context を足して、その中に Resource を足す。Context 要素を足す位置は、Host 要素の開始タグの直後でいい。MySQLの場合、こんな感じ。
<Context path="/myapp" docBase="myapp" reloadable="true" crossContext="true"> <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" maxActive="3" maxIdle="30" maxWait="10000" username="mydbuser" password="mydbpassword" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/teriyaki?autoReconnect=true"/> </Context>
さらに、web.xml に宣言を追加。
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/mydb</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
最後に、JDBC ドライバを適切な場所に置く。WEB-INF/lib に置いても参照されない。Tomcat で MySQL の場合、common/lib に mysql-connector-java-3.1.11-bin.jar をコピーしておく。
タグファイルを書くには
タグは Java クラスとして書くこともできるが、タグファイル (拡張子 .tag のテキストファイル) に書いてもいい。
タグファイルは基本的には JSP ファイルと同じだが、ディレクティブがちょっと違う。page ディレクティブの代わりに tag ディレクティブを使うほか、attribute ディレクティブと variable ディレクティブが使える。include ディレクティブと taglib ディレクトリは、JSP ファイルと同じように使える。
<%@ tag pageEncoding="UTF-8" %> <%@ attribute name="target" %> hello ${target}