2003年度 データベース論

JSPの作成
エンタープライズアプリケーション II
第4回 / 2006年6月18日
1
ここでの内容



タグライブラリとはなにか
JSFでのJSPの記述
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