では、簡単な例からはじめましょう。これらの例は正しい設計の
基礎にさえも触れません。
しかし、正しい設計が単純な例を示すことより多くの場合難しいので、
これらはまだ良い例となります。
我々は、このエッセイに沿ってさらに例がよりよいと証明します。
最初の例のために、我々はJSPとVelocityを使って正確に同じことを行う
2つの異なる方法を示します。
これは、JSPでパラメータを印刷することの例です:
 |
 |
 |
 |
<html>
<head><title>Hello</title></head>
<body>
<h1>
<%
if (request.getParameter("name") == null) {
out.println("Hello World");
}
else {
out.println("Hello, " + request.getParameter("name"));
}
%>
</h1>
</body></html> |
 |
 |
 |
 |
これは、Velocityを使用して同じことをする例です。
 |
 |
 |
 |
<html>
<head><title>Hello</title></head>
<body>
<h1>
#if ($request.getParameter("name") == null)
Hello World
#else
Hello, $request.getParameter("name")
#end
</h1>
</body></html> |
 |
 |
 |
 |
[ これらの2つの画面ショットは、人が簡単にJSPを使うとき、コードがブラウザにおいてしてあることを見ることができないという考えを示します。 ]
これらの2つの方法の主な違いは、出力の実行です。
JSPでは、<% %>タグの範囲内で「コード」を
埋め込む必要があります、そして、Velocityでは、それをする必要がありません。
埋め込まれたコードの長所(そして、短所)は、
ファイルが単にブラウザにロードされるとき、
ページの範囲内のJSPコードが現れることにはならならないということです。
一方で、それが現れる(例えば、デバッグすることでの)のを
要求するかもしれない場合が、あるかもしれません。
JSPによる別の問題は、最も基本的な例さえ水面から噴出し全部のMVCパラダイムに
吹きつけ始めるという事実です。
理由は、それが後日アプリケーションの見た目を
修正することをより難しくするので、Javaコードの範囲内でHTMLコードを
埋め込むのはよくない設計の決定であるということです。
それは、ページのVIEW(つまりHTML)表示がモデルとコントローラから
切り離されるMVC分離の概念を破壊します。
例えば、「Hello」という語だけを強調したい場合には、
我々はout.println()ステートメントに
<b></b>タグを埋め込む必要があるでしょう。
もちろん、よく知っている人々は、我々がこのようにJSPを書くことを勧めます:
 |
 |
 |
 |
<html>
<head><title>Hello</title></head>
<body>
<h1>
<% if (request.getParameter("name") == null) %>
Hello World
<% else %>
Hello, <% request.getParameter("name"); %>
</h1>
</body></html> |
 |
 |
 |
 |
またはStrutsを使って
 |
 |
 |
 |
<html>
<head><title>Hello</title></head>
<body>
<h1>
<logic:notPresent parameter="name">
Hello World
</logic:notPresent>
<logic:present parameter="name">
<bean:parameter id="name" name="name"/>
Hello, <bean:write name="name"/>
</logic:present>
</h1>
</body></html>
|
 |
 |
 |
 |
[ これは、上記の例を直接ブラウザにロードしたときの新しいJSPのスクリーンショットです。 ]
作られる必要がある点は、JSPを「純粋に」するために、JPSは本当に
言われたとおりにする必要があるということです。
上記の例は、Velocityの例は同じように見えます。しかし、
JPSは、まだ至る所に必要な<% %>タグを埋め込む必要があります。
より多く == をタイプことは、より多く間違える可能性があります!
また、ちょっと「;」が加える必要がある時に、忘れてしまうと、接続が断たれます。
あなたはサンプルのイメージから、ページを構築することは、
使われたロジックの全てを省いたとしても表示されたページよりちょっと多くの
情報があるということが分かります。ひとつのビューならば等価Velocity
テンプレートは直接ブラウザにおいて、それなしでテンプレートでロジックの
全く最初になって、見えるままです。
利点は、問題をデバッグすることはより簡単であるということです。
あなたが判断してください。
[ Home <- 前 |
次 -> 生成? ]