jsfについて

teedaがかなりはやってるようなので、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をダウンロードして、以下のファイルをクラスパスに指定する。

  1. commons-beanutils.jar
  2. commons-digester.jar
  3. commons-logging.jar
  4. jsf-api.jar
  5. jsf-impl.jar

jstlをダウンロードしてクラスパスに指定する。
http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html

  1. jstl.jar
  2. standard.jar
    <!-- 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(バッキング ビーン)と呼ばれる。

タグライブラリのインポート

<%@ 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/>

でサブミットされた時に格納されるBacking Bean(userBean)を指定する。
でサブミット処理を指定する。

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でsuccess文字列の場合/success.jspに遷移するように指定しているので、ブランクではない場合、success.jspに遷移する。

*1:Backing Bean、Managed Beanどっち!?