//(1)J2SDK1.4からデフォルトパッケージをインポートすることは // できなくなったため、JSPプログラムからインポートできる // ようにパッケージを宣言します。 package tags; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; //(2)タグハンドラクラスを作成するために、 // Tagインタフェースを実装します。 public class helloTagServlet implements Tag { private PageContext pageContext; private Tag parentTag; public void setPageContext(PageContext pageContext) { this.pageContext = pageContext; } public void setParent(Tag parentTag) { this.parentTag = parentTag; } public Tag getParent() { return this.parentTag; } //(3)開始タグが呼び出されたときにを実行される // doStartTagメソッドです。このメソッドに // 実行させたい処理を記述します。 public int doStartTag() throws JspException { try { JspWriter out = pageContext.getOut(); //(4)タグが実行されたときに画面に // "Hello World!"と表示します。 out.print("Hello World!"); } catch(Exception e) { throw new JspException(e.getMessage()); } return SKIP_BODY; } //(5)終了タグが呼び出されたときに実行される // doEndTagメソッドです。このメソッドに // 実行させたい後処理を記述します。 public int doEndTag() throws JspException { return EVAL_PAGE; } public void release() {} }
<?xml version="1.0" ?> <!-- (1)JSP2.0よりXMLの定義方法がDTDからXMLスキーマに変わりました。 DTDも使用できるようですが、XMLスキーマを使用する場合は 以下のような宣言を行います。DTDを使用する場合は<!DOCTYPE ---- >といった宣言を行います。 --> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <!-- (2)使用するJSPのバージョンを指定します。 --> <jsp-version>2.0</jsp-version> <short-name>helloTag</short-name> <tag> <!-- (3)JSPで使用するタグ名を指定します。 --> <name>helloTag</name> <!-- (4)タグの動作を定義したタグハンドラクラスを パッケージ名から記述します。 --> <tag-class>tags.helloTagServlet</tag-class> <body-content>empty</body-content> </tag> </taglib>
<?xml version="1.0" encoding="UTF-8"?> <!-- (1)Servlet2.4よりXMLの定義方法がDTDからXMLスキーマに変わり ました。DTDも使用できるようですが、XMLスキーマを使用す る場合は以下のような宣言を行います。DTDを使用する場合は <!DOCTYPE ---- >といった宣言を行います。 --> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> <jsp-config> <taglib> <!-- (2)JSPプログラムのtaglibディレクティブのuri属性で指 定した値を設定します。設定したURLに実際のファイル が配置されているわけではありません。このタグで設 定した値は単にtaglibディレクティブのuri属性で指定 された値と紐付けする値として使用されます。 --> <taglib-uri>http://www.javaroad.jp/tags/hello</taglib-uri> <!-- (3)tldファイルの配置場所をコンテキストルートからの相 対パスで指定します。 --> <taglib-location>/WEB-INF/lib/hello.tld</taglib-location> </taglib> </jsp-config> </web-app>
<%-- (1)pageディレクティブでタグハンドラクラスが 属するパッケージをインポートします。 --%> <%@ page contentType="text/html; charset=windows-31j" import="tags.*" %> <%-- (2)taglibディレクティブでJSPプログラムでカスタムタグ を使用するための設定を行います。 --%> <%@ taglib uri="http://www.javaroad.jp/tags/hello" prefix="hello" %> <HTML> <BODY> <%-- (3)カスタムタグを使用します。タグのプレフィックスに taglibディレクティブで指定した値を使用します。 タグ名にはtldファイルで指定した値を使用します。 --%> <hello:helloTag /> </BODY> </HTML>