Java开源框架之SpringMVC原理及源码解析

Java开源框架之SpringMVC原理及源码解析

游戏|数码彩彩2024-07-21 7:45:32454A+A-

MVC是英文Modle View Controller的简称,是一种软件设计典范,目的是将业务逻辑、数据、页面视图代码分离,达到增加开发效率、降低耦合度、代码更利于维护的目的。

Java开源框架之SpringMVC原理及源码解析

 

Spring MVC是一个流行的MVC框架,我们知道Spring核心是解决业务逻辑层和其他各层的松耦合问题,Spring MVC由Spring基础框架支撑,让开发JAVA Web 程序变得更简单。

Java开源框架之SpringMVC原理及源码解析

 

Spring MVC 框架原理:

1.用户HTTP请求 ——> DispatcherServlet(调度器根据请求进行调度)

2.DispatcherServlet ——> HandlerMApping(找到对应的处理器)

3.HandlerMapping ——> Controller(调用对应的处理器)

4.Controller ——>业务层(调用业务层完成相应的业务)

5.业务层 ——> ModelAndView(处理结果数据)

6.ModelAndView ——>DispatcherServlet ——>ViewResolver(视图解析器做处理)

7.ViewResolver ——> View(模型数据显示) ——>用户

Spring MVC 实现源码解析

ContextLoaderListener类:

简述:ContextLoaderListener类是一个监听类,在Tomcat启动后创建一个IOC容器,并将创建的IOC容器存到servletContext中。

web.xml中的配置:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

springMVC父容器初始化流程图:

Java开源框架之SpringMVC原理及源码解析

 

DispatcherServlet类:

简述:DispatcherServlet是SpringMVC的入口,DispatcherServlet类主要用作职责调度工作,本身主要用于控制流程。

代码实现的业务逻辑:

DispatcherServlet类本身也是一个Servlet,以下是该类的关系图:

Java开源框架之SpringMVC原理及源码解析

 

DispatcherServlet调度器架构原理:

Java开源框架之SpringMVC原理及源码解析

 

HandlerMapping接口:

简述:根据调度器的请求找到一个处理器handler,其实现机制简单来说就是维持了一个url到Controller关系的Map结构。

实现机制:

HandlerMapping的实现机制就是根据request来获得HandlerExecutionChain,其实就是获取真正要执行的Controller或者某个具体的方法。HandlerMapping接口提供唯一的方法getHandler(HttpServletRequest request)。

ViewResolver接口:

简述:ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图。

InternalResourceViewResolver类是ViewResolver的实现类,在xml中配置如下:

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
     id="internalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
   </bean>

View接口:

简述:View接口的职责就是接收model对象、Request对象、Response对象,并渲染输出结果给Response对象。

点击这里复制本文地址 版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

昂扬百科 © All Rights Reserved.  渝ICP备2023000803号-3网赚杂谈