【Spring】SpringMVC请求原理

什么是SpringMVC:

        SpringMVC 是Springframework中基于Java实现的Model-View-Controller框架,用于管理web应用程序的请求处理流程,并遵循MVC设计原则。

什么是MVC:

        MVC是Model-View-Controller的缩写,是一种设计原则,广泛应用在web应用开发中。

        Controller-控制器:接受http请求,解析、映射并转发给对应的model处理;中转站,获取model的返回结果返回给view;在SpringMVC中,@Controller注解标注的类起到controller的作用。

        Model-模型:封装业务逻辑和数据,包括调用dao层,在JavaEE环境中,模型通常由Java bean或实体类组成,并通过dao层或Service层与数据库交互。

        View-视图:是用户界面,负责展示和接受数据;将Model中的数据展示在View上;在web应用中可以是Thymeleaf页面,或jsp页面,HTML页面等。

        

SpringMVC工作流程:

        借来一张图:

博客:【SpringMVC】SpringMVC原理和工作流程_springmvc原理及流程-CSDN博客

1、前端控制器(DispatcherServlet)-接受、分发请求,协助
        所有的HTTP请求首先由Spring MVC的核心组件DispatcherServlet接收。
        DispatcherServlet是整个MVC架构的入口点,它负责接收、分发请求,并协调其他组件来完成请求处理。
2、处理器映射器(HandlerMapping)-找到URL对应的controller
        DispatcherServlet查询已注册的HandlerMapping组件,这些组件用于根据请求的URL找到对应的处理器(Controller)。HandlerMapping会将请求映射到相应的Controller及其处理方法上。在controller中使用@RequestMapping注解标识路径。
3、Controller处理请求:
        当找到合适的Controller后,DispatcherServlet会调用该Controller中的相应方法进行业务逻辑处理。
        Controller可以访问服务层(Service Layer)处理业务逻辑,并从数据访问层(DAO Layer)获取或更新数据模型(Model)。
4、ModelAndView创建:
        处理完业务逻辑后,Controller通常会返回一个ModelAndView对象,其中包含了视图名称以及需要展示的数据模型。
5、视图解析器(ViewResolver):
        DispatcherServlet接下来会将ModelAndView对象传递给ViewResolver,用于解析实际的视图技术(如JSP、Thymeleaf、FreeMarker等)及视图路径。
        ViewResolver基于返回的视图名称选择并实例化一个具体的视图对象。

        就是说DispatcherServlet不是亲自去解析视图,而是交给ViewResolver类。
6、视图渲染与响应:
        最后,选中的视图对象会使用Controller提供的模型数据进行渲染,并生成最终的HTML页面或者其他类型的响应内容。
        渲染完成后,DispatcherServlet将这个响应内容发送回客户端。

        第1、2步相当于MVC中的C;3、4步相当于M;5、6步相当于V;

关于dispatcherServlet:

        从上面的流程中,我们发现dispatcherServlet在springMVC 中启动非常重要的作用,接收、分发请求,中转,视图解析,将结果返回给客户端。提到dispatcherServlet,我们自然会想到Servlet。

        Servlet为Web服务器提供了扩展HTTP协议请求和响应处理的能力。Servlet是一个实现了javax.servlet.Servlet接口或继承自javax.servlet.http.HttpServlet类的Java类,它可以接收并响应客户端发送的HTTP请求,执行相应的业务逻辑,并将结果以HTTP响应的形式返回给客户端。

        dispatcherServlet我认为可以理解为是Servlet的一个变体,不仅具有Servlet的功能,还提供了分发请求,视图解析以及SpringMVC框架集成的能力。

        

        以上就是我对SpringMVC原理和流程的梳理。经过本次梳理,再结合项目实战,对SpringMVC,DispatcherServlet,Servlet技术,MVC模型有了更加深刻理解。

        无限感慨前人架构设计之伟大,无限感恩前人对软件设计做出的贡献,太厉害了。


其他:

1、关于SSH(Struts2-Spring-Hibernate)和SSM(SpringMVC-Spring-Mybatis)中Struts和SpringMVC的对比:

        Struts是一个单独且非常著名的Java Web框架,主要用于处理MVC(Model-View-Controller)设计模式中的控制层。

        Struts的主要作用是在Web应用开发中提供一种结构化的、可扩展的方式来组织和管理业务逻辑以及页面展示。它通过ActionServlet作为前端控制器接收HTTP请求,并根据配置文件(如struts-config.xml)将请求映射到相应的Action类进行处理。Struts提供了丰富的标签库来简化JSP页面的开发,同时具备异常处理、数据校验、国际化等功能。

        而在SSM框架体系中,SpringMVC替代了Struts的角色,承担起处理HTTP请求、转发到Service层进行业务逻辑处理、并返回视图渲染的任务。虽然Struts曾经非常流行,但在现代Web开发中,由于Spring MVC以及其他轻量级框架的兴起,Struts的使用已相对减少。

2、SpringBoot中对SpringMVC的应用:

        在Spring Boot中,虽然没有明确地配置和使用Spring MVC的XML配置文件,但Spring Boot默认集成了Spring Web MVC框架,因此处理HTTP请求时仍然是基于Spring MVC的机制。当你在Spring Boot应用中创建一个Controller来接收和处理HTTP请求时,实际上就是在利用Spring MVC的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王师傅66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值