初めてのJava EE 6──第2回 プレゼンテーション層はJSFで作る

Oracle Java & Developers編集部
2014-04-30 15:00:00
  • このエントリーをはてなブックマークに追加

マネージドBean──実体はPOJO。画面操作に対応した処理や画面遷移を定義する

 一方のマネージドBeanは、JSFのコンポーネントで、その実体は通常のJavaクラス(POJO:Plain Old Java Class)です。このマネージドBeanが、画面に対する入出力の管理、画面操作に対応した制御、画面遷移などを担います。開発者は、XHTMLにJSFタグで定義した画面要素のそれぞれについて、次のような処理を記述するわけです。

  • 画面の各構成要素について、どのような内容を表示するのか
  • ボタンがクリックされたり、メニュー項目が選択されたりした際、どのような制御を行うのか
  • フォームで入力された値を、どう処理するのか(ビジネス・ロジックに渡すなど)
  • 処理の結果、どの画面に遷移するのか

【リスト2:マネージドBeanの例】


package managed;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.faces.bean.ManagedBean;

// 「@ManagedBean」というアノテーションにより、
// このPOJOがマネージドBeanであることをアプリケーション・サーバに伝える
@ManagedBean
public class SimplePageBean {

  // ビジネス・ロジックを持つEJBコンポーネントの注入
  @EJB
  private Logic logic;

  // ボタンがクリックされた際に実行されるメソッド。
  // そのときの時間を表示する
  public String actionDisplay(){

    // ビジネス・ロジックの呼び出し
    logic.doLogic();
    display = new SimpleDateFormat("HH:mm:SS").
      format(Calendar.getInstance().getTime());

    // 遷移先画面の指定
    return “index.xhtml”;
  }

  // ボタンがクリックされるまで、指定した文字列を表示する
  private String display = "まだボタンが押されていない";

  public String getDisplay() {
    return display;
  }
}



リスト2の実行結果の例

 なお、前回説明したように、JSFには画面で入力された値のチェック(入力された値が指定した範囲内のものかといったことを調べるバリデーション処理)について、一般的な機能を提供するコンポーネントが用意されています。ただし、「独自のチェックを行いたい」、「相関チェックを行いたい」といった場合には、自分でバリデーション機能を作ることもできます。

 以上、今回はJava EEによるWebアプリケーションのプレゼンテーション層を作るためのJSFについて説明しました。次回は、ビジネス層、永続化層を作るための技術であるEJB、JPAについて説明します。

【Java EE 6の各機能の使い方を解説した小冊子「実践! Java EE 6」を特別配布中!】

本企画で説明している内容からステップアップし、実際に手を動かしながらJava EE 6によるWebアプリケーション開発を体験してみたいという方に、Oracle WebLogic ServerとEclipseを使ったJava EE 6開発の具体的な手順を解説した小冊子「実践! Java EE 6」をお配りしています。下記のリンク先よりダウンロードしてください(ダウンロードにあたっては、CNET_IDへのご登録が必要となります)。

【コラム:「HTTPを意識せず、コンポーネント駆動でシンプルに作る」、それがJSFのコンセプト】

 JSFが、これまでのWebアプリケーション開発技術とどう違うのかということについて、開発技術の側面から少し補足しておきましょう。

 PHPやJSP、サーブレットなど、従来のWebアプリケーション開発技術では、Webブラウザとサーバとの間で使われる通信プロトコルであるHTTPを強く意識したプログラミングを行っていました。Webアプリケーションの機能として実装する内容は、「画面を構成するボタンがクリックされたら、対応する処理を呼び出して、その処理結果を送り返す」というシンプルなものだったとしても、その中にHTTPを使ったWebブラウザ/サーバ間のやり取りが介在することで、プログラムの複雑性が増していたのです。

 一方、JSFではHTTPをなるべく意識しない「コンポーネント駆動型(Component Driven)」の開発スタイルを採用しています。これは、Windowsのデスクトップ・アプリケーションやJavaのSwingなどと似た開発スタイルだと言えます。これらの技術では、基本的に画面レイアウトとボタンをクリックした際のイベントと、それに応じた処理がシンプルに対応します。これにならい、「Webアプリケーションも、画面を構成するコンポーネントと、それに対応する処理を作るといったかたちで、従来よりもシンプルに作れるようにしよう」という考えから生まれたのがJSFなのです。

 もちろん、Webアプリケーションである以上、HTTPを意識したプログラミングが必要になる場合もありますが、それを最小限に抑え、デスクトップ・アプリケーションと同様にシンプルな開発を目指している点がJSFの非常に大きな特徴であり、これからのWebアプリケーション開発技術として皆さんに強くお勧めする理由でもあるのです。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]