(笔记D1) Spring MVC 框架

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 提供制式化实作, 让设计师专注於逻辑。

https://ithelp.ithome.com.tw/upload/images/20210924/20142439oZHlp40WyL.jpg

1-2 Spring MVC 与传统 MVC 架构差异
Web 应用程序的 Model 2 架构 : GUI MVC Design Pattern 的变形

  • View : JSP 实作、负责画面显示、提供 HTML From、产生HTTP Response (回应资料画面)。
  • Controller : Servlet 实作、负责 Model 元件与 View 元件之间互动关系。
  • Model : JavaBeans 实作、负责程序资料存取与逻辑。
    Model 1 与 Model 2 差在 Controller : JSP 实作

         Web 应用程序的 Model 2 架构图 : 
       Controller 负责处理 user 请求
                ▼ 根据商业逻辑找到, 需要的 Model
       Model 跟资料库存取相关的资料
                ▼ 找到资料後, 告诉 Controller 呼叫适当的 View
       View 接收 Controller 和 Model 的资讯产生所需的画面            

https://ithelp.ithome.com.tw/upload/images/20210927/20142439vGcZmRTdIG.png

优点 : 处理 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等格式。


<<:  【面试】与 HR Phone screening

>>:  Day24 <AuthorizeRouteView>运用

Day 32:来呼叫星战 Profile List 下一页吧(1/2)

在 Day 31 分享 RecyclerView 如何载入更多之後,先来帮大家回顾之前星战的 Pro...

<Day3>当代的网路金融环境

在探讨如何将API应用在金融之前,我们势必要先来了解一下什麽是金融? 所谓的「金融」简单来说就是资本...

Day07 - 在 Next.js 中使用 pre-rendering (getStaticProps) — Part 1

前言 Next.js 的 pre-rendering 实作是这个框架的一大卖点,在 Next.js ...

Day20 xib传值的小教室!

首先,尽然要传值,就要有两个页面才能使其中一页的值传至另一页面,所以我们要先准备好两个xib。 当然...

Day27:今天我们来聊一下将Microsoft 365 Defender 连接到 Azure Sentinel

Microsoft 365 security portal提供目标导向的使用者介面,以降低Micro...