(笔记D2) Spring MVC 框架处理流程

2-1 使用 Spring MVC 框架提供的分派器(Dispatcher Servlet), 处理请求流程

Dispatcher Servlet 类别 :

  • Package (套件) : org.springfromework.web.servlet。

  • MVC 架构支援1个 Web 应用程序可设定多个 Dispatcher Servlet。

  • 每个 Dispatcher Servlet 都可载入独立 Spring 设定档, 形成独立 Spring Bean Container (就是 Web Application Context 物件), 且 Bean 不与其他 Dispatcher Servlet 共用。

  • Dispatcher Servlet 会优先从自己的 Web Application Context 物件内寻找需要的 Bean 元件, 若找不到则会讲寻找任务交给 Root Web Application Context 物件。
    <Root Web Application Context : 设定 Service、DAO等元素并使用 Context Loader Listener 载入而产生的 Bean Container>
    https://ithelp.ithome.com.tw/upload/images/20210927/20142439ZXrL0ZtnLK.png
    https://ithelp.ithome.com.tw/upload/images/20210927/20142439z1q0ftow3r.png

  • Spring Web MVC 架构在初始化 Dispatcher Servlet 时, 预设寻找 /WEB-INF/-servlet.xml 的档案, 产生档案中的 Bean 元件并覆盖 Root Web Application Context 同名的 Bean 元件。

  • 其中是 web.xml 内 Dispatcher Servlet 的 标签设定值

  • 可在 Dispatcher Servlet 的标签内, 使用标签以及 context Config Location 更换档案名称与目录。

**修改 Dispacher Servlet 使用的 Spring 组态设定档预设档名 : **
https://ithelp.ithome.com.tw/upload/images/20210927/20142439hMucIAZxBJ.png

Dispacher Servlet 的初始化会产生一系列特殊 Bean 元件 :

  • Handler Mapping、View Resolver等, 让 Dispacher Servlet 处理 HTTP Request 以及产生 View 提供显示画面使用。

  • 预设的特殊 Bean 元件定义在 org.springfromework.web.servlet 套件的 Dispacher Servlet.properties 档。

  • 当-servlet.xml 组态设定档, 设定任何1个特殊 Bean 元件(Handler Mapping、View Resolver), 预设的特殊 Bean 元件就被忽略。

为 Spring Web MVC 架构核心, 实作 Front Controller 设计模式的主要元件

Dispacher Servlet 的基本流程 :
1. 负责拦截 HTTP Request 的动作(都要经过它)。
2. 根据 Handler Mapping 的注册资料, 取得需要执行的 Controller 元件。
3. 呼叫 Controller 元件处理 HTTP Request 并取得 Controller 元件的回传值 Model And View。
4. 根据 View Resolver 注册资料取得要导向的 View 元件。
5. 将 HTTP Request 导向显示的 View 元件。

2-2 前端控制器模式(Front Controller Pattern)

  • 是一个集中管理请求处理机制, 所有请求都交由一个单一处理程序负责, 此处里程序可以完成相关验证、授权、追踪或者记录log等请求(Request)并将请求交由对应的程序处理。
  • 前端控制器(Front Controller) : 负责处理应用程序所有请求的单一处理程序, 可应於 Web 应用程序或 GUI 视觉化界面的应用程序。
  • 排程器(Dispacher) : 前端控制器可使用转发物件执行相关请求到对应的处理程序。
  • 检视(View) : 用来提供请求(Request)显示对应功能所建立的物件。

<<:  #12 matplotlab教学

>>:  Day12-Kubernetes 那些事 - Replication Controller

从零开始的8-bit迷宫探险【Level 256】恭喜全部破关!游戏完成 & 结语

为什麽铁人 30 天的最後一篇标题是 Level 256 呢? 主要是致敬小精灵 Pac-Man ...

【我可以你也可以的Node.js】第二五篇 - 蛞蝓能不能变蜗牛 #租房是残忍的 #我好想要有个家

事情是这样的,我最近一直都在忙找新的租屋处, 不续租的原因有很多,最主要的原因是目前的房子会漏水啊...

Day21 类别与物件--魔术方法construct and deconstruct

类是通过class关键字来定义的,是对某个物件的定义,包含有关物件名称、方法、属性和事件,不过实际上...

[13th][Day13] slice

在 go 的世界中,没有 array 这个 keyword ,只有 slice 跟 map map ...

[Day 24] 自定义 REST QueryDSL 实现动态查询资料库

大多数系统的资料库查询操作比写入多样化且复杂,後端工程师要花比较多的心力撰写查询 API,以下列出常...