JSP/Servletのお勉強メモ その7
タグライブラリについてをやってみる.
タグライブラリとは, スクリプトの代わりに処理を行うことのできるタグである,
カスタムタグをまとめたもののこと.
JSTLってのがあるみたい.
導入がちょっち面倒っぽい.
カスタムタグの作成
カスタムタグ作成の流れとしてはこんな感じになる.
とりあえずは簡単な例をやってみる.
TLDファイルの作成
<?xml version="1.0" encoding="UTF-8"?> <taglib> <tlib-version>2.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>CustomTag Sample</short-name> <tag> <name>printDate</name> <body-content>empty</body-content> <tag-class>chap10.sec01.PrintDateTag</tag-class> </tag> </taglib>
何度書いてもXMLはいやだなあ.
書くのが面倒だし, エラー出たとき間違い箇所見つけるのがやっかい.
なお, body-content中のemptyは, タグの内容を指定しないということ.
タグハンドラクラスの定義
とはいってもjavaファイルの作成, コンパイルなんだけど.
配置場所は, classes以下package指定にそってでOK.
package chap10.sec01; import java.io.*; import java.util.Date; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class PrintDateTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); out.println( new Date() ); } }
コンパイルはちょっとだけとまどった.
$ javac -d classes -classpath $CATALINA_HOME/common/lib/jsp-api.jar src/chap10/sec01/PrintDateTag.java
web.xmlにタグライブラリを登録
web-appタグの中にこんなのを記載.
<taglib> <taglib-uri>http://localhost:8080/jspbook/simpletag</taglib-uri> <taglib-location>/WEB-INF/tld/customtag-example.tld</taglib-location> </taglib>
taglib-uriは, jspファイルでタグライブラリを指定するために使う.
名前みたいなもんだろうから, 何でもいいんじゃないかと思う. (実際どうなんだか知らないけど.)
ちなみに日本語のコメントを書いといたらエラーが出て全然上手くいかなかった.
日本語コメント消したら上手くいったから, 間違いないんだろうけど文字コードの問題かなあ.
JSPファイルの作成
本に載ってたサンプルそのまま.
現在の時刻を表示する.
<%@ page contentType="text/html; charset=EUC_JP" %> <!-- web.xmlのtaglib-uriに書いたものを指定する. --> <%@ taglib uri="http://localhost:8080/jspbook/simpletag" prefix="test" %> <HTML> <HEAD> <TITLE>SimpleTagSupportを使用したカスタムタグ</TITLE> </HEAD> <BODY> <H1> <test:printDate /> </H1> </BODY> </HTML>
これで終了.
意外と簡単だった.
サーブレットとどう使い分ければいいんだろう.
線引きが分かりづらいなあ.
でもかなり便利そうだなあ.
上手くやればjsp内にjavaコードをなくせるかもしれないし.
やっぱり先にjavaコードをコンパイルしとくからjspに比べて動作が高速だったりするのだろうか?
高速であるとかそういうことが目的ではないみたいね.
ここ↓が詳しいかな. なっとく.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
dW : Java technology : JSTL入門: 式言語
http://www-06.ibm.com/jp/developerworks/java/030411/j_j-jstl0211.html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-