質問: * java * JDK8 * servletを使用したMVCモデルのWebアプリケーション * 社内独自のフレームワーク(←この開発も行っています。)
回答: JSP内でスクリプトレットを使用してロジックを記述すると、MVCモデルにおけるViewとModelあるいはControllerとの適切な分離が困難になります。結果として、とりわけ長期に渡る大きなプロジェクトほど、以下2つの問題を抱え込むことになるでしょう。 * 保守性の低下 * 再利用性の低下 さらに上記に付随する問題点として「コードの可読性の低下」や「開発作業の分離性の低下」なども挙げられるでしょう。 **保守性の低下** 開発では「ビジネス・ロジックのコードを修正・変更することなく表示だけを修正・変更したい」、もしくはその反対に「表示のコードを修正・変更することなくビジネス・ロジックだけを修正・変更したい」という状況は頻繁に発生します。その際に両者の修正・変更がお互いに影響を及ぼさないことが理想ですが、JSPでスクリプトレットを記述していると、修正・変更の影響範囲や依存関係を特定することが困難になります。特定が困難になれば、当然、修正・変更によって想定していなかった問題が発生する可能性が高くなります。 **再利用性の低下** スクリプトレットで記述したロジックは基本的にそのJSP内でのみ利用可能であり、他のプログラムから利用するための「再利用性」や「汎用性」が著しく低下します。 したがって、表示と強く関連するロジックには「カスタム・タグ」を、純粋なビジネス・ロジックに関しては「JavaBeans(POJO)」や「EJB」を使用することで、それらのロジックをコンポーネント化し、再利用性や汎用性(結果として保守性や可読性、作業分離性も)を向上させることができます(またWebサービスであればJAX-RSを使用することが可能)。JSPではこれらのコンポーネントと共にELを併用することでメリットを補完することができます。