Spring MVC的完整执行流程和常用组件详解

 更新时间:2022年06月10日 10:27:12   作者:郭尕  
SpringMvc是Spring的一个基于MVC开发的一个框架,用来处理前端请求,可以和Spring无缝整合,下面这篇文章主要给大家介绍了关于Spring MVC的完整执行流程和常用组件的相关资料,需要的朋友可以参考下

1.Spring MVC执行流程

Spring MVC的完整执行流程如下:

  1. 客户端发送请求给DispatcherServlet前端控制器
  2. DispatcherServlet根据请求调用HandlerMapping处理器映射器
  3. HandlerMapping解析请求对应的Handler,返回一个执行链
  4. DispatcherServlet将执行链返回的Handler信息发给HandlerAdapter处理器适配器
  5. HandlerAdapter会调用对应的Handler处理器(即Controller)
  6. Handler执行完成后,会返回一个ModelAndView对象给HandlerAdapter
  7. HandlerAdapter将接收到的ModelAndView对象返回给DispatcherServlet
  8. DispatcherServlet根据ModelAndView对象选择合适的ViewResolver视图解析器
  9. ViewResolver根据逻辑View返回实际的view给DispatcherServlet
  10. DispatcherServlet对View进行渲染
  11. 将视图渲染结果返回给浏览器(客户端)

2.Spring MVC常用组件

2.1 DispatcherServlet

前端控制器。⽤户请求到达前端控制器,它就相当于MVC模式中的C,DispatcherServlet是整个流程控制的中⼼,由它调⽤其它组件处理⽤户的请求,DispatcherServlet的存在降低了组件之间的耦合性,系统扩展性提⾼。

<!--    SpringMVC的前端控制器-->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--初始化时加载配置文件-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <!--表示容器在启动时立即加载Servlet-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

2.2 HandlerMapping

HandlerMapping,处理器映射器。根据⽤户的请求地址来找到对应的Handler即控制器,spring mvc提供了不同的映射器实现不同的映射⽅式,分别有:

  • xml配置⽅式
  • 实现接⼝⽅式
  • 注解⽅式

2.3 HandlAdapter

HandlAdapter,处理器适配器。按照特定的规则去执行Handler,通过HandlerAdapter执行处理器。

2.4 Handler

Handler,处理器。Handler 是DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的⽤户请求进⾏处理。由于Handler涉及到具体的⽤户业务请求,所以⼀般情况需要程序员根据业务需求开发Handler。也就是我们常说的控制器类和方法。

//标识此类为控制器类
@Controller
public class JspController {

    @RequestMapping("/index")
    public String firstController(){
    	//返回视图名称
        return "success"; 
    }
}

2.5 ViewResolver

ViewResolver,视图解析器。ViewResolver负责将处理结果⽣成View视图,ViewResolver⾸先根据逻辑视图名解析成物理视图名即具体的页⾯地址,再⽣成View视图对象,最后对View进⾏渲染将处理结果通过页⾯展⽰给⽤户。

 <!--默认的内置视图解析器-->
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <!--视图前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--视图后缀-->
    <property name="suffix" value=".jsp"/>
</bean>

总结

到此这篇关于Spring MVC完整执行流程和常用组件详解的文章就介绍到这了,更多相关Spring MVC执行流程和组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MybatisPlus条件查询的具体使用

    MybatisPlus条件查询的具体使用

    MybatisPlus通过条件构造器可以组装复杂的查询条件,本文主要介绍了MybatisPlus条件查询的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • java GUI实现学生图书管理简单实例

    java GUI实现学生图书管理简单实例

    这篇文章主要为大家详细介绍了java GUI实现学生图书管理简单示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 教你如何更改IDEA项目的路径

    教你如何更改IDEA项目的路径

    这篇文章主要介绍了教你如何更改IDEA项目的路径,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 实例讲解Java设计模式编程中的OCP开闭原则

    实例讲解Java设计模式编程中的OCP开闭原则

    这篇文章主要介绍了Java设计模式编程中的开闭原则,开闭原则的大意被作者总结为用抽象构建框架,用实现扩展细节,需要的朋友可以参考下
    2016-02-02
  • SpringBoot实现加载yml文件中字典数据

    SpringBoot实现加载yml文件中字典数据

    这篇文章主要为大家详细介绍了SpringBoot如何实现加载yml文件中字典数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-04-04
  • 浅谈java.util.concurrent包中的线程池和消息队列

    浅谈java.util.concurrent包中的线程池和消息队列

    这篇文章主要介绍了浅谈java.util.concurrent包中的线程池和消息队列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 聊聊java变量的初始化之后的默认值

    聊聊java变量的初始化之后的默认值

    这篇文章主要介绍了聊聊java变量的初始化之后的默认值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java中的List集合初始化及常见方法解析

    Java中的List集合初始化及常见方法解析

    这篇文章主要介绍了Java中的List集合初始化及常见方法解析,List集合的特点是元素有序可重复,只要是带集合、数组的都叫有序,因若无序就不会存在有下标,本文来讲一下List集合初始化及常见方法,需要的朋友可以参考下
    2023-10-10
  • Spring Boot 使用 Hutool-jwt 实现 token 验证功能

    Spring Boot 使用 Hutool-jwt 实现 token 验证功能

    JWT 就是一种网络身份认证和信息交换格式,这篇文章主要介绍了Spring Boot使用Hutool-jwt实现token验证,需要的朋友可以参考下
    2023-07-07
  • JAVA心得分享---return语句的用法

    JAVA心得分享---return语句的用法

    return算是各大语言的常客,基本上都有return语句,那么在JAVA中,return有什么特殊的地方吗,下面我们来分析下
    2014-05-05

最新评论