深入解析Spring MVC: 原理、流程【面试版】

什么是SpringMV?

1.是一个基于MVC的web框架;

2.是spring的一个模块,是spring的子容器,子容器可以拿父容器的东西,但是反过来不可;

2.SpringMVC的前端控制器是DispatcherServlet,用于分发请求。使开发变得简单;

4.SpringMVC流程(重点),三大组件:

HandlerMapping:处理器映射器

用户请求路径到Controller方法的映射

HandlerAdapter:处理器适配器

根据handler(controlelr类)的开发方式(注解开发/其他开发) 方式的不同去寻找不同的处理器适配器

ViewResolver:视图解析器

可以解析JSP/freemarkerr/pdf等

Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

SpringMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :

(1)加入Jackson.jar

(2)在配置文件中配置json的映射

(3)在接受Ajax方法里面可以直接返回Object,List等

Spring MVC处理流程及应用优势

1、客户端发出一个http请求给web服务器,web服务器对http请求进 行 解析,如果匹配前端控制器(或分发器/DispatcherServlet)的请求映射路径, web容器将请求转交给DispatcherServlet.

2、DipatcherServlet接收到这个请求之后将根据请求的信息以及处理器映射 器(HandlerMapping)的配置找到处理请求的处理器(Handler)。

3、由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。

4、Handler对数据处理完成以后将返回一个ModelAndView()对象给 DispatcherServlet。

5、DispatcherSevlet通过视图解析器(ViewResolver)将ModelAndView()转 化为真正的视图View。

6、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展 现出完整的view并返回给客户端。

相关推荐

  1. 深入解析OAuth2的原型与认证流程【1】

    2024-04-01 02:40:01       33 阅读
  2. SpringMVC原理分析(十二)--异常处理流程

    2024-04-01 02:40:01       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 02:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 02:40:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 02:40:01       82 阅读
  4. Python语言-面向对象

    2024-04-01 02:40:01       91 阅读

热门阅读

  1. 练气第四天

    2024-04-01 02:40:01       40 阅读
  2. Python提取文本文档符合条件的某列

    2024-04-01 02:40:01       35 阅读
  3. 分布式算法 - ZAB算法

    2024-04-01 02:40:01       37 阅读
  4. 深度优先搜索(DFS)算法深入探索与实践

    2024-04-01 02:40:01       36 阅读
  5. [内部类与常见API]String类

    2024-04-01 02:40:01       39 阅读
  6. 如何让div中滚动条一直保持在最下方

    2024-04-01 02:40:01       35 阅读
  7. 烂笔头,记录一年遗忘

    2024-04-01 02:40:01       40 阅读
  8. 【python】《流畅的python》读书笔记之第1-2章

    2024-04-01 02:40:01       45 阅读
  9. Redis 过期删除策略和内存淘汰策略

    2024-04-01 02:40:01       36 阅读