jsfについて
teedaがかなりはやってるようなので、jsfについてこちらを参考に勉強してみたのでまとめ。
- jsfとは
以下引用
「JSF (JavaServer Faces)」は、ユーザによりブラウザ等で表示されるページ(UI)とJavaBeans(ビジネスロジック)の間のやり取りをプログラムレスにし、簡単にWebアプリケーションを開発することを可能とするフレームワークです。Webアプリケーション開発のためのフレームワークといえば、Strutsが有名です。Strutsは画面遷移(MVCモデルのC(コントローラ))に強いのに対して、JSFはユーザインタフェース(MVCモデルのV (ビュー))に強いと言われています。
JSF | Struts |
---|---|
faces-config.xml | struts-config.xml |
メソッドバインディング | DispatchAction |
ナビゲーションルール | アクションマッピング |
Backing Bean*1 | ActionForm |
- 準備
tomcat(5.5)ではjsfの実装がないので、jarを追加する必要がある。
ここから、jsf-1_1.zipをダウンロードして、以下のファイルをクラスパスに指定する。
jstlをダウンロードしてクラスパスに指定する。
http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html
- jstl.jar
- standard.jar
- web.xml
<!-- Faces Servlet --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/jsf/*</url-pattern> </servlet-mapping>
web.xmlにFacesServletを追加する。
上記のように記述すると、http://[ドメイン]/[コンテキスト名]/jsf/にリクエストがあった場合、FacesServletが呼び出される。
- faces-config.xml
<navigation-rule> <from-view-id>/from.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/success.jsp</to-view-id> </navigation-case> </navigation-rule> <managed-bean> <managed-bean-name>userBean</managed-bean-name> <managed-bean-class>jp.co.type2.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
faces-config.xmlには、beanの登録と、画面遷移について設定する。
登録したbeanはBacking Bean(バッキング ビーン)と呼ばれる。
- from.jsp
タグライブラリのインポート
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Backing Beanとのマッピング
<h:inputText id="id" value="#{userBean.Id}"> <f:validateLength maximum="5"/> </h:inputText> <br> <h:commandButton id="submit" action="#{userBean.execute}" value="Submit" /> <br> <h:messages/>
- UserBean.java
package jp.co.type2; public class UserBean { private String id; public String execute() { if(!"".equals(id)){ return "success"; }else{ return null; } } public String getId() { return this.id; } public void setId(String id) { this.id = id; } }
executeメソッドでブランクでない場合、success文字列をリターンする。faces-config.xmlの
追記
*1:Backing Bean、Managed Beanどっち!?