Spring MVC体系结构和处理请求控制器(一)

一、MVC模式

  • MVC模式是指Model-View-Controller(模型-视图-控制器)模式,是开发Web应用程序时常用的一种代码分层模式
  • MVC模式是软件工程中的一种架构模式,会强制行的把系统的输入、处理和输出分开,是系统从功能上形成Model-View-Controller三个基本部分:

视图(View)-对应组件:JSP或者HTML文件:负责格式化数据并把它们呈现给用户,包括数据展示、数据验证、界面设计等

控制器(Controller)-对应组件:Servlet:负责接收并转发请求,对请求进行处理后指派视图并将响应结果发送给客户端

模型(Model)-对应组件:JavaBean:模型对象拥有最多的处理任务,是应用程序的主体部分,它负责业务逻辑的处理和实现对数据的操作

1.1 MVC整体流程图

1.2 JSP Model1

1.3 JSP Model2

  • Servlet:接受前端请求并调用JavaBean
  • JavaBean:处理业务并操作数据库
  • JSP:将处理结果响应到浏览器呈现给用户

1.4 MVC的优缺点

优点

  • MVC三个模块相互独立,松耦合架构
  • 多视图共享一个模型,大大提高代码的可重用性
  • 控制器提高了应用程序的灵活性和可配置性
  • 有利于软件工程化管理

缺点

  • 增加了系统结构和实现的复杂性,不适合小型项目
  • 视图层与模型之间需要控制器做中间的连接控制,所以效率较低

二、Spring MVC架构

  • 用Controller替换JSP Model2模型中的Servlet
  • Controller收到请求后,完成业务处理并用Model模型对象存储处理结果
  • Controller调用相应的视图解析器View对处理结果进行视图渲染,最终客户端得到响应信息

2.1 Spring MVC环境搭建

2.2 Spring MVC请求处理流程

  1. 浏览器发送请求至前端控制器
  2. 前端控制器收到请求后调用处理器映射器
  3. 处理器映射器找到具体的Handler处理器返回给前端控制器
  4. 前端控制器调用处理器适配器
  5. 处理器适配器去调用具体的处理器(Controller)
  6. Controller返回一个ModelAndView对象给处理器适配器
  7. 处理器适配器将接收到的MdoelAndView对象返回给前端控制器
  8. 前端控制器将ModelAndView对象传给视图解析器进行解析
  9. 视图解析器将解析结果View返回给前端控制器
  10. 前端控制器根据View进行视图渲染
  11. 前端控制器响应浏览器的请求

2.3 Spring MVC体系结构

DispatcherServlet(前端控制器)
  • Spring MVC最核心的类
  • web.xml中配置
Handler(处理器):对应MVC中的C(Controller层)
  • 类型:Object
  • zuoyong:实际处理请求
  • 标注了@RequestMapping的所有方法都可以看做是一个Handler
ModelAndView
  • 逻辑视图名
  • 模型对象

核心组件

HandlerMapping(处理器映射)
  • BeanNameUrlHanderMapping(默认)
    • 将请求URL映射到同名的控制器Bean上
  • DefaultAnnotationHandlerMapping
    • 将请求映射到标注@RequestMapping注解的控制器和处理方法上
  • RequestMappingHandlerMapping
HandlerAdapter(适配器)
  • AnnotationMethodHandlerAdapter
  • RequestMappingHandlerAdapter
ViewResolver(视图解析器)
  • InternalResourceView

2.4 Spring MVC框架特点

  • 清晰地角色划分
  • 灵活的配置功能
  • 提供了大量的控制器接口和实现类
  • 真正做到与View层的实现无关(JSP、Velocity、Xslt等)
  • 国际化支持
  • 面向接口编程
  • Spring提供了Web应用开发的一整套流程,不仅仅是MVC,它们之间可以很方便的结合一起

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-10 13:40:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-10 13:40:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-10 13:40:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-10 13:40:02       20 阅读

热门阅读

  1. Element Plus的deep穿透

    2024-04-10 13:40:02       15 阅读
  2. 计算机的各种转换

    2024-04-10 13:40:02       11 阅读
  3. SpringBoot中ApplicationEvent的用法

    2024-04-10 13:40:02       16 阅读
  4. 要有大不了被裁了的思想

    2024-04-10 13:40:02       13 阅读
  5. 常见Linux嵌入式C语言笔试面试题

    2024-04-10 13:40:02       15 阅读
  6. tp6 mongodb简单的增删改查

    2024-04-10 13:40:02       11 阅读