JSPの作成 J2EE II 第3回 2005年4月10日
ここでの内容 JSFでのJSPの作り方と動かし方について学ぶ。
JSFでのJSPの記述
概要 タグライブラリを利用してJSPページを作成する。 基本的には、タグライブラリ中のカスタムタグがUIコンポーネントに対応する。
簡単な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>
タグライブラリの利用を宣言 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> HTML tag HTML 出力に関係するタグ <%@ taglib uri="http://java.sun.com/jsf/core" prefix=“f” %> Core tag HTML出力とは関係ないタグ
f:view 要素 <f:view> <h:form> …… </h:form> JSF のタグは、すべて f:view タグの中に記述する。 JSFのタグの「コンテナ」としての働き
h:form 要素 <f:view> <h:form> …… </h:form> フォームを表すUIコンポーネント HTMLのformタグを表す
h:input 要素 <h:form> <h:inputText id="word" /> テキスト入力用のUIコンポーネント HTMLでは <input type=“text”> となる
id 属性 <h:form id="searchForm"> <p>何か入力してね !</p> <h:inputText id="word" /> </h:form> id は f:view 要素の中でそれぞれ違っている必要がある。 id は省略できる。その場合は JSF により自動的に id がつけられる。
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>
生成されたHTMLソース <form id="searchForm" method="post" action="/jsf-test01/jsp/test.jsp;jsessionid=0DF696E1084D276D5841AF0EE3DA9D66" enctype="application/x-www-form-urlencoded"> <p>何か入力してね !</p> <input id="searchForm:word" type="text" name="searchForm:word" /> <input type="hidden" name="searchForm" value="searchForm" /> </form>
JSP を動かす
Tomcat への配置 jsf-test01 --- test.jsp |- WEB-INF/ ---- web.xml |-- faces-config.xml |-- lib/ |- (ライブラリ)
必要なライブラリ (1) JSFの lib フォルダ中にある jar ファイルを WEB-INF/lib にコピー commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar jsf-api.jar jsf-impl.jar
必要なライブラリ (2) JSTL の lib フォルダ中にある jar ファイルを WEB-INF/lib にコピー jstl.jar standard.jar
faces-config.xml の作成 <?xml version="1.0"?> …… 今回はまだ空
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> <url-pattern>/jsp/*</url-pattern> </servlet-mapping>
web.xml の編集 (2) servlet 要素 Controller で使う Servlet を指定する。 load-on-startup 要素は、この (JSFを使った) Webアプリケーションの起動時に、1つの Servlet が動作することを示す。
web.xml の編集 (3) servlet-mapping 要素 <url-pattern>/jsp/*</url-pattern> JSF では、Webブラウザからの要求は、すべて FacesServlet が処理をする。 JSP の表示も例外ではない。 JSP を表示するときは、この /jsp を含めた名前でアクセスする。
JSPを呼び出すURL http://localhost:8080/jsf-test01/jsp/test.jsp jsf-test01 の直下にあるからといって、http://localhost:8080/jsf-test01/test.jsp にアクセスしてもエラーになる。 なぜなら、JSPの表示もすべて FacesServlet を経由する必要があるから。
Tomcat への配置 jsf-test01 --- test.jsp |- WEB-INF/ ---- web.xml |-- faces-config.xml |-- lib/ |- (ライブラリ)