【SpringMVC】详细介绍SpringMVC的执行流程
创始人
2024-11-05 18:43:06

目录

1. 概念

2.SpringMVC工作原理

3. springMVC的简单使用

1.在pom.xml中导入相关依赖

 2.在web.xml中配置dispatcherServlet

3.创建springMVC.xml核心配置文件


1. 概念

什么是MVC?

MVC是下面三个组件的简写,模型(Model)、视图(View)和控制器(Controller)。

  • 模型(Model): 表示应用程序中的数据和业务逻辑。在Spring MVC中,通常使用POJO作为模型对象。通常模型对象负责在数据库中存取数据。
  • 视图(View): 负责展示用户界面,通常是HTML页面、JSON响应或其他类型的视觉呈现。视图负责将模型数据渲染,并向用户呈现。
  • 控制器(Controller): 接收并处理HTTP请求,并根据请求的内容选择相应的处理方法。控制器负责调度适当的业务逻辑,操作模型数据,并通过相应的视图返回响应结果。

注:MVC是一种思想,而Spring MVC是在MVC模式的基础上实现的一种Web框架,即SpringMVC是一种具体实现。它利用了MVC的优势并添加了更多的功能和便利性,使得开发者可以更轻松地构建和维护现代化的Web应用程序。

2.SpringMVC工作原理

 

如上图2所示,执行步骤如下:

  1. 用户通过浏览器或其他客户端向服务器发送 HTTP 请求。
  2. 当请求到达服务器时,容器(如 Tomcat)将请求传递给 前端控制器 ( DispatcherServlet ),DispatcherServlet 是 Spring MVC 的核心组件,它负责接收 HTTP 请求,并且作为请求处理的入口点。然后读取配置文件来初始化 WebApplicationContext,它又是 Spring 应用上下文的一个子接口,它包含所有 Bean 的定义和配置信息。
  3. 前端控制器 ( DispatcherServlet ) 收到请求调用处理器映射器 (HandlerMapping),通过 URL 或其他规则来决定应该调用哪个控制器。而处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
  4. 前端控制器(DispatcherServlet) 查找能够处理选定控制器的 HandlerAdapterHandlerAdapter 负责调用控制器中的具体方法。

  5. 处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller)。

  6. 自定义的处理器类(Controller)将得到的参数进行处理并返回结果给处理器适配器(HandlerAdapter)。

  7. 处理器适配器 ( HandlerAdapter )将得到的结果返回给前端控制器 (DispatcherServlet)。

  8. 前端控制器(DispatcherServlet )将 ModelAndView 传给视图解析器 (ViewReslover)。

  9. 视图解析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给前端控制器(DispatcherServlet)。

  10. 前端控制器(DispatcherServlet)调用物理视图进行渲染并返回。

  11. 前端控制器(DispatcherServlet)将渲染后的结果返回。

3. springMVC的简单使用

开发流程

  • maven创建web工程(略)
  • 引入依赖Spring+SpringMVC+JSTL+Servlet基础包
  • 在web.xml中配置dispatcherServlet
  • 创建SpringMVC核心配置文件
  • 开发controller
  • 创建测试index.jsp页面

1.在pom.xml中导入相关依赖

      4.0.0      org.example     02-SpringMVC     1.0-SNAPSHOT     war              8         8         UTF-8                                              org.springframework             spring-core             5.3.26                               org.springframework             spring-beans             5.3.26                               org.springframework             spring-context             5.3.26                               org.springframework             spring-test             5.3.26             test                               org.springframework             spring-aop             5.3.26                               org.springframework             spring-tx             5.3.26                               org.springframework             spring-jdbc             5.3.26                                        org.mybatis             mybatis             3.5.16                                        org.mybatis             mybatis-spring             2.0.6                                        com.mysql             mysql-connector-j             8.0.33                                        org.projectlombok             lombok             1.18.24                          provided                               junit             junit             RELEASE                                        javax.servlet             javax.servlet-api             3.1.0             provided                               javax.servlet             jstl             1.2                                        taglibs             standard             1.1.2                                        org.springframework             spring-webmvc             5.3.26               

 2.在web.xml中配置dispatcherServlet

       Archetype Created Web Application                             CharacterEncodingFilter         org.springframework.web.filter.CharacterEncodingFilter                      encoding             utf-8                            CharacterEncodingFilter         /*                   mvc         org.springframework.web.servlet.DispatcherServlet                      contextConfigLocation             classpath:springmvc.xml                            1                   mvc         /       

3.创建springMVC.xml核心配置文件

                                                                  

4.开发controller层代码

package com.wollo.controller;  import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;  @Controller public class MyController4 {          @RequestMapping("/add")     public String add(){         System.out.println("我只是一个普通的单元方法");         return "add";     }  }

5.jsp页面代码如下

<%--   Created by IntelliJ IDEA.   User: 22529   Date: 2024/8/6   Time: 11:06   To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %>       Title       我是add页面   

6.最后启动tomcat,在地址栏中输入http://8080/add可以看到页面如下

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...