JSPの作成 J2EE II 第5回 / 2005年11月17日 1 ここでの内容 JSFでのJSPの作り方と動かし方について 学ぶ。 2 タグライブラリとはなにか 3 カスタムタグ JSPの中で定義できる独自のタグ。 スクリプトレットを使って記述するところをタ グで表現できる。 カスタムタグを使うことで、見通しのよい JSPを作成できる。 4 タグライブラリ 複数のカスタムタグをまとめてひとつの パッケージにしたものを「タグライブラリ」と 言う。 タグライブラリの構成 タグの処理を記述する Java のプログラム (通 常は Jar ファイルで提供される) タグに関する情報を持つ Tag Library Descriptor (TLD) 5 さまざまなタグライブラリ 既製のタグライブラリがいくつかある。 JavaServer Pages Standard Tag Library (JSTL) 値の設定・制御構造 データベースへのアクセス、国際化、XMLの解析など Jakarta Taglibs JSF のタグライブラリ などなど 6 JSFでのJSPの記述 7 概要 タグライブラリを利用してJSPページを作成 する。 基本的には、タグライブラリ中のカスタムタ グがUIコンポーネントに対応する。 8 簡単なJSPのサンプル <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> …… <f:view> <h:form id="searchForm"> <p>何か入力してね !</p> <h:inputText id="word" /> </h:form> </f:view> …… 9 タグライブラリの利用を宣言 (1) <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> HTML tag HTML 出力に関係するタグ h: という名前ではじまるタグ (例: h:form) <%@ taglib uri="http://java.sun.com/jsf/core" prefix=“f” %> Core tag HTML出力とは関係ないタグ f: という名前ではじまるタグ (例: f:view) 10 タグライブラリの利用を宣言 (2) <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix=“t” %> MyFaces独自のタグ Tomahawk というライブラリにまとめられている t: という名前ではじまるタグ 11 f:view 要素 <f:view> <h:form> …… </h:form> </f:view> JSF のタグは、すべて f:view タグの中に記述する。 JSFのタグの「コンテナ」としての 働き 12 h:form 要素 <f:view> <h:form> …… </h:form> </f:view> フォームを表すUIコンポーネン ト HTMLのformタグを表す 13 h:input 要素 <h:form> <h:inputText id="word" /> </h:form> テキスト入力用のUIコンポーネント HTMLでは <input type=“text”> となる 14 id 属性 <h:form id="searchForm"> <p>何か入力してね !</p> <h:inputText id="word" /> </h:form> id は f:view 要素の中でそれぞれ違っている 必要がある。 id は省略できる。その場合は JSF により自 動的に id がつけられる。 15 JSP全体 (再掲) <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> …… <f:view> <h:form id="searchForm"> <p>何か入力してね !</p> <h:inputText id="word" /> </h:form> </f:view> …… 16 生成されたHTMLソース <form id="searchForm" method="post" action="/jsftest01/jsp/test.jsp;jsessionid=0DF696E1084D276 D5841AF0EE3DA9D66" enctype="application/xwww-form-urlencoded"> <p>何か入力してね !</p> <input id="searchForm:word" type="text" name="searchForm:word" /> <input type="hidden" name="searchForm" value="searchForm" /> 17 </form> JSP を動かす 18 Tomcat への配置 jsf-test01 --- test.jsp |- WEB-INF/ ---- web.xml |-- faces-config.xml |-- lib/ |- (ライブラリ) 19 必要なライブラリ (1) myfaces-1.1.1.zip と myfaces-examples1.1.1.zip から必要なjarファイルを抽出 commons-beanutils.jar commons-codec.jar commons-collections.jar commons-digester.jar commons-el.jar commons-fileupload.jar commons-lang.jar commons-logging.jar commons-validator.jar jakarta-oro.jar portlet-api.jar struts.jar myfaces-all.jar 20 faces-config.xml の作成 <?xml version="1.0"?> …… <faces-config> </faces-config> faces-config 要素を用意する。 今回はまだ空 21 web.xml の編集 (1) <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class> javax.faces.webapp.FacesServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> 22 web.xml の編集 (2) servlet 要素 Controller で使う Servlet を指定する。 load-on-startup 要素は、この (JSFを使っ た) Webアプリケーションの起動時に、1つ の Servlet が動作することを示す。 23 web.xml の編集 (4) servlet-mapping 要素 <url-pattern>*.jsf</url-pattern> JSF では、Webブラウザからの要求は、す べて FacesServlet が処理をする。 JSP の表示も例外ではない。 JSP を表示するときは、この ".jsf という拡 張子を含めた名前でアクセスする。 24 JSPを呼び出すURL http://localhost:8080/jsf-test01/test.jsf jsf-test01 の直下にあるからといって、 http://localhost:8080/jsf-test01/test.jsp にア クセスしてもエラーになる。 なぜなら、JSPの表示もすべて FacesServlet を 経由する必要があるから。 25 Tomcat への配置 jsf-test01 --- test.jsp |- WEB-INF/ ---- web.xml |-- faces-config.xml |-- lib/ |- (ライブラリ) 26
© Copyright 2024 ExpyDoc