SpringMVC原理分析之一MVC框架

本文深入剖析SpringMVC框架,解释MVC模式的基本概念及其解决问题,详细介绍了SpringMVC的初始化过程,特别是DispatcherServlet的init方法和service方法,以及核心组件的初始化。内容涵盖DispatcherServlet在请求处理中的角色,如doService()和doDispatcher()方法的执行流程,揭示了SpringMVC如何优雅地处理请求和响应。
摘要由CSDN通过智能技术生成

本篇博文以MVC原理为基础,讲解了MVC的架构概念 需要解决的问题,以及使用SpringMVC搭建项目示例让读者了解MVC架构的优秀实现者SpringMVC框架,最后以DispatcherServlet简要的分析了SpringMVC的请求和响应流程。希望这篇博文能让大家更好的理解SpringMVC的相关原理。

目录

MVC框架

1、何为MVC框架

2、MVC框架解决的问题

3、MVC框架

SpringMVC框架

       1、springMVC简介

       2、SpringMVC核心组件

      3、SpringMVC流程示例

DispatcherServlet入口

init方法

   1、ContextRefreshListener刷新事件

   2、初始化SpringMVC组件

​service方法

    FrameworkServlet

    doService()方法

    doDispatcher()方法


  • MVC框架

 

1、何为MVC框架

  1. M  即MODEL 模型对象  用于web进行请求和响应的数据传输对象
  2. V   即VIEW  视图对象  用户呈现响应数据的视图展示
  3. C  即Controller 控制对象 用户对web请求数据进行逻辑处理

MVC架构模式 将数据,视图展示、逻辑处理分离出来,便于我们针对某一方面(比如逻辑处理的变更不会变动视图和处理、或者视图变更不会影响业务逻辑)

2、MVC框架解决的问题

  1. 当浏览器发送一个http请求,web是如何接受这个请求并指定相应的java类来执行业务逻辑并返回处理结果的?
  2. web 应用的是典型的“请求--响应”模式的应用,数据是如何顺利流转于浏览器和java世界之间的?面对http协议和java世界数据的不匹配性,我们如何能够做到在流转时数据类型的自动转换?
  3. Web容器是一个典型的多线程环境,针对每个http请求,web容器的线程池会分配一个特定的线程进行处理。那么如何保证在多线程环境下, 处理请求的java类是线程安全的对象?如何保证数据的流转和访问都是线程安全的?

     这个不是web容器的概念吗?跟MVC框架有啥关系

  1. Controller层作为MVC的核心控制器,如何能够在最大程度上支持功能点上的拓展?
  2. view层的表现形式是多种多样的,随着web开发技术的不断发展,mvc如何在框架级别提供一种完全透明的方式来应对不同的视图表现形式?
  3. MVC模式虽然很直观的为我们规定了表示层的各种元素,但是如何通过某种机制把这些元素有机整合在一起,从而成为一个整体呢?

 总的来说分成三大部分 1、将web页面的请求传给服务器

  1. 根据不同的请求处理不同的逻辑单元
  2. 3、返回处理结果并跳转至响应页面。

3、MVC框架

        常使用的SpringMVC框架 Jsp+servlet+javaBean、Struct2、SpringMVC、grails

 

SpringMVC框架

1、springMVC简介

       SpringMVC是以请求驱动,基于Servlet功能实现的将web请求转发给控制器,控制器进行相关逻辑处理,转换为数据对象并通过视图解析器将对应的数据展示到特定视图。核心入口是DispatcherServlet类。

2、SpringMVC核心组件

  • DispatcherServlet类
  • 处理器映射器 HandlerMapping
  • 处理器适配器 HandlerAdapte
  • 视图解析器 ResourceViewResolver

3、SpringMVC流程示例

         https://github.com/liushangzaibeijing/ssm.git

 

DispatcherServlet入口

    下面我们从Spring核心入口类入手来探究SpringMVC的原理奥妙。

在UML类图中,红色标明的是Serv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值