1-1 Spring MVC 特质
功能建构在 Servlet、JSP 规格基础上面发展,必须透过 Web Container 的支援才能执行。<Web Container : 类似tomcat里的web容器, 提供JRE执行环境>
Spring Web MVC 实作 Front Controller Design Pattern (集中管理), 连近来都透过 IOC 机制, 将 Model、 Controller、View 之间关係分开, 降低耦合方便日后更换 Model、Controller、View 元件, 好维护。
<IOC 控制反转 (Inversion of Control): 是一种设计原则, 藉由 『分离组件 (Components) 的设置与使用』, 来降低类别或模组之间的耦合度 (i.e., 解耦)>
Spring Web MVC 将Web应用程式连接View元件与Controller元件程式码( View 呼叫 Controller(request)、 Controller 导向 View(response)) 两种方式切开, Spring 提供制式化实作, 让设计师专注于逻辑。
1-2 Spring MVC 与传统 MVC 架构差异
Web 应用程式的 Model 2 架构 : GUI MVC Design Pattern 的变形
Model 1 与 Model 2 差在 Controller : JSP 实作
Web 应用程式的 Model 2 架构图 : Controller 负责处理 user 请求 ▼ 根据商业逻辑找到, 需要的 Model Model 跟资料库存取相关的资料 ▼ 找到资料后, 告诉 Controller 呼叫适当的 View View 接收 Controller 和 Model 的资讯产生所需的画面
优点 : 处理 HTTP Request 的程式依功能分3部分(MVC),撰写其中任一部份时不需考虑其他 部分要怎么配合。
缺点 : 将 Web 元件依照 Model、View、Controller 的不同功能分开, 通常容易放错位置。
访间有各种不同的 Framework 能帮助我们避免这些错误
这边要介绍的是 Spring Web MVC Fromework
1-3 Spring Web MVC 的主要组成元件 :
Dispatcher Servlet : 负责 HTTP Request 并导向对应的 Controller 元件。
<所有的请求都要经过它>
Hander Mapping : 纪录 HTTP Request 与 Controller 元件之间的对应关係。<帮助 HTTP Request 找到对应的 Controller 元件>
Controller : 处理 HTTP Request 和 HTTP Response 元件。<可像 HTTP Servlet 一样取得, HttpServletRequest 与 HttpServletResponse 物件使用>
Model And View : 提供 Model 与 View 元件相关资料让 Dispatcher Servlet 使用。<2者之间传递资料, Model 抓到资料后 传到指定的 View 显示>
View Resolver : 纪录 View 元件逻辑名称与 View 元件实际 URL 之间对应关係。<让 Controller 元件使用逻辑名称呼叫 View>
View : 负责显示 Request 后的画面, Spring Web MVC 支援 JSP、JSTL、XSLT、PDF等格式。