簡単なアプリケーション

 

 


JSPの基本コンセプトは、新たなタグを導入してユーザへ渡すHTMLのページを作成する部分を分離させ、見栄えの良い効果的なページを効率的に生成しようとするものである。いわゆるプレゼンテーション・ロジックを分離させたことで、ビジネス・ロジックとの間で情報のやり取りが必要になる。そのためのオブジェクトをbeanとし、ビジュアルな開発環境に対応させる仕組みもJSPに備わっている。

 

JavaBeansJavaのクラスではあるが、ビジュアルな開発ツールに対応するための条件が備わったものである。以下にその必要条件を示す:

     このクラスは引数の無いコンストラクタを有すること:これは通常コンストラクタを作らないことで達成される。

     Publicなインスタンス変数が存在してならない

     永続的な値はgetSomevalue()setSomevalue()という名前(SomeValueは任意)のメソッドでアクセスせねばならない

 

JSPのなかからJavaBeansを使うときには、これをある名前で使うことを宣言しなければならない。これはサーブレットで云えばこのクラスのインスタンスを生成するということになる。シンタックスは次のようである。

<jsp: useBean id=”name” class=”package.Class” />

これと等価なスクリプトレットは、

<% package.Class class1 = new package.Class(); %>

となる。jsp:useBeanのアクションには下記の属性があることは前節に示したとおりである。

 

id="name"

scope="page|request|session|application" class="package.Class”

type="package.Class"

beanName="package.Class"

 

特にscope属性はこのbeanが共有される範囲を指定するので強力である。

 

JavaBeansのプロパティにアクセスするには以下のように使う:

<jsp:getProperty name=”name1” property=”property1” />

または、

<%= name1.getProperty1() %>

である。

 

それではbeanを介在させたサーブレットと複数のJSPページからなるアプリケーションは一般にどのような構成になるであろうか? 下図を見ていただきたい。

 


 


これは簡単なショッピング・サイトのモデルである。一般に買い物客は一人ずつ買い物篭(ショッピング・バスケットとかショッピング・カートとか呼ばれる)をもって店内を回り、欲しいものが棚にあるか調べ、あればその商品をその籠に入れる。客が店を出るときに店員にその籠を渡し、店員はこれを集計する。在庫があるかを調べることを在庫.jspが受け持ち、そこから欲しいものを選択して籠に入れる部分を購入.jspが受け持ち、最後のレジの部分はレシート.jspが受け持つというイメージである。

 

買い物客が持つ買い物篭はショッピング・バスケットのビーンのオブジェクトである。このオブジェクトは顧客がこの店に入った時点、つまり新たにセッションが作成されたときに生成される。したがってこのオブジェクトはセッションに貼り付けるのが妥当であろう。各JSPはセッションのオブジェクトに貼り付けられた買い物篭のオブジェクトの参照をベースにその顧客に必要な画面を提供する。ついでにレシートのビーンも顧客ごとのものであるから、セッションに貼り付けてサーブレット間で共有する。

 


同様な構成は前に実習したRestaurantのアプリケーションにおいても云える。このアプリケーションをサーブレットとJSPの連携で構成させると次のようになる。

 

 


このモデルでは、当日ストックする料理と献立はストックのビーンに、顧客ごとに提示しかつオーダーを受けるものをメニューのビーンにしている。各ウェイトレスは顧客が来店するごとにメニューを用意し、オーダー受け付けのJSPに渡す。注文の受け付け、確認、料理を出す、料金を請求しレシートを渡すなどの顧客とのインターフェイスは、顧客に好感を与えるページが作りやすいJSPが担当する。

 

このアプリケーションを構成する各ファイルは何処に配備されるのかを下図に示す。

 


 


新たに用意されるフォルダーはJSPファイルを置くためのJSPなるフォルダーである。なお今回はjavaファイルはrestaurantというパッケージにまとめている。各JSPはこのパッケージを最初にインポートする。

 

このアプリケーションのアーカイブ(Tomcat 4.X用、RestaurantCresc.war)をアップロードしたので、各自試してみられると良い。

 

 

 

 

前節     目次     次節