JavaBeansはMVCデザイン・パターンに従うためにJSPページからJavaオブジェクトを
使用する方法です。これを行なうポイントは
Pull方法論
に類似した何かを実装することです。例:
 |
 |
 |
 |
<jsp:useBean id="name" scope="page|request|session|application"
class="className" type="typeName">
|
 |
 |
 |
 |
上記のコードの構文を調べて、すぐ最初に浮かんでくるものは、
scope属性の使用です。
何人のHTMLデザイナーが、scopeプログラミング概念がわかっていますか?
それが、Webデザイナーの良い部分がかろうじてCGIが働く方法の
概念がわかるように提案するのは確実です。
これは、我々が人々を軽んじようとしているわけではありません。
その代わりに、我々は単にそのデザインとソフトウェア工学がはっきりした
技術セットであると指摘しています。
あなたは、Javaプログラマーがprintを選択したり、Webセーフカラーパレット
を選ぶのを期待しないでしょうね?
このような議論に対する共通の反応は、デザイナーが単にこれらのタグを
無視しなければならなくて、他でそれらを定義して、実装させなければならないということです。
それに関する問題は、あなたが今やそれらにそれが複雑なscope問題が
すぐに現れないかもしれないので、デバッグするのが非常に難しいような方法において、
偶然にあなたの全アプリケーションを破壊する力を与えたということです。
 |
 |
 |
 |
Java のコード:
public class HelloBean {
private String name = "World";
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
JSP のコード:
<jsp:useBean id="hello" class="HelloBean">
<jsp:setProperty name="hello" property="*" />
</jsp:useBean>
<HTML>
<HEAD><TITLE>Hello</TITLE></HEAD>
<BODY>
<H1>
Hello, <jsp:getProperty name="hello" property="name" />
</H1>
</BODY>
</HTML>
|
 |
 |
 |
 |
上記で、我々はページにおいてbeanを使うことの非常に単純な例を出します。
それに若干のプロパティを渡して、それから、結果を取り出します。
JSPを使うとき、これは正しいやり方です。
しかし、我々がVelocityで正確に同じものをする例を見れば、
人が単にプロパティを取り出すために実行する必要がある
不必要なタイピングの特別な量は、いささかばかばかしくなります。
もちろん、前にタイプしたものを作るGUIベースの
ドラッグ・アンド・ドロップ・ツールが、前々からあります。
現実には。
今日では素晴らしいドラッグ・アンド・ドロップVIEWをJSPとStrutsで開発をするために
提供する商用のソリューション利用できるものがいくつかあります。
しかし、これらのツールの多くは、まだ第一世代のツールです。
彼らは、一般的に問題の一部について言及して、
ものが難しいか不可能でさえあるようになる本質やり方に
ダウンが気に入ることにGUIですることを要求するだけです
(誰か、Tangoと呼ばれている製品を覚えています?)。
たびたび、これらのツールは高い負荷のサイトのために最適化
されないコードを生産します、そして、時々スケールへの現存の
応用を得ることは完全なリライトを必要とします。
再び、これは我々の決定ではありません、それはあなたのものです。
ここの注意への別のアイテムは、これらが高価な(>$1000/席)開発ツールであるということです。
この.bomb経済において、誰が本当にこれらのツールに費やすお金を持っていますか?
 |
 |
 |
 |
Java コード:
context.put ("hello", new HelloBean());
Velocity コード:
$hello.setName("*")
<HTML>
<HEAD><TITLE>Hello</TITLE></HEAD>
<BODY>
<H1>
Hello, $hello.Name
</H1>
</BODY>
</HTML>
|
 |
 |
 |
 |
例は、コンテキストに HelloBean() オブジェクトを作成して置くことを示します。
それから、テンプレートの実行時の間、オブジェクトでintrospectionをするためにJavaBean仕様書を使う$variableとして、そのオブジェクトは、利用できます。
例えば、Velocityはメソッド呼び出しが単に示された上記であることをタイプすることに$hello.getName()から短くなるのを許すためにbeanスタイルintrospectionを使います。
VelocityがTurbineと組み合わせられるとき、構成オプションまたはそれが処理のどんな点ででも加えられることができるので、HelloBeanオブジェクトはコンテキストに加えられることができます。
VelocityがTurbineと組み合わせられるとき、
構成オプションまたはそれが処理のどんな点ででも加えられることができるので、
HelloBeanオブジェクトはコンテキストに加えられることができます。
これは、コンテキストでオブジェクトの「scope」を提供することです。
JSPでJavaBeansを使うことによる別の「よしっわかった」は、
ジェイソンの本から再び引用されます:
 |
 |
 |
 |
気をつけること:
若干のサーバー(Tomcat 3.2を含む)上であなたが「セッション」または
「アプリケーション」のscopeとあなたとbeanを持つ、変更点beanクラス実装、
あなたは後の要求に関してClassCastExceptionを得るかもしれません。
コードがそれがそうであるので、beanインスタンスの上でキャストをするために
セッションまたはアプリケーションから取り出した、そして、
古いbeanタイプがセッションまたはアプリケーションに保存した発生する
servletが予期される新しいbeanタイプにマッチしないので、この例外は起こります。
最も単純なソリューションは、サーバーを再起動することです。
|
 |
 |
 |
 |
あなたが判断してください。
[ エラー処理 <- 前 |
次 -> サンプル・アプリケーション ]