MVC vs. Model1 vs. Model2

id:muimyさんとこでMVC vs. Model1 vs. Model2の話がでてたので調べてみました。

MVC
wiki:Model View ControllerにあるようにSmaltalkを作り出したTrygve Reenskaugさんが70年代に紹介したコンセプトですよね。
簡単に言うと、アプリケーション、またはアプリケーションの一部をModel、Controller、Viewに切り離そうというものです。

The Model-View-Controller (MVC) is a commonly used and powerful architecture for GUIs.

id:a-sanさん(えーさんさん?!)がおっしゃる通り、MVCGUIのためのものです。

The view manages the graphical and/or textual output to the portion of the bitmapped display that is allocated to its application. The controller interprets the mouse and keyboard inputs from the user, commanding the model and/or the view to change as appropriate. Finally, the model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).

Model1 / Model2
で、そのMVCから進化したもの、変化したものと言われるのがModel1とModel2です。 進化したって言う日本語はおかしいのかな? "evolution of MVC"を直訳したんやけど…。 ようはModel1にもModel2にもModel/View/Controllerのコンセプトはあるんだけども、それぞれがどこに配置されてるか(?)ってことですよね。
MVC Pattern & Frameworksによると:

JSPページのシリーズで作られてて、ビジネスロジックやコントロール部分がJSPにうめこまれてる。

JSPServletが一緒に使われてる。

The literature on Web-tier technology in the J2EE platform frequently uses the terms "Model 1" and "Model 2" without explanation. This terminology stems from early drafts of the JSP specification, which described two basic usage patterns for JSP pages. While the terms have disappeared from the specification document, they remain in common use. Model 1 and Model 2 simply refer to the absence or presence (respectively) of a controller servlet that dispatches requests from the client tier and selects views.

ようするに、id:muimyさんの言うようにコントローラの役割をするservletがあるかないかがModel1とModel2の違いなわけですね。

ちなみに、StrutsはModel2をもとにして作られたフレームワークです。 でも、ややこしいので普通にMVCベースと言うデベロッパも多いです。