SpringMvc与Servlet一样,都属于web层的开发。在Web应用程序设计中,MVC模式已经被广泛使用。SpringMVC以DispatcherServlet为核心,负责协调和组织不同组件以完成请求处理并返回响应的工作,实现了MVC模式。
这时候有人会说,既然SpringMvc与servlet一样,那我们为啥还要学习SpringMvc嘞
咱们看一个最基础的servlet的例子

在这个servlet中,我们重写了doGet和doPost两个方法,同时让doPost转调doGet对请求进行统一的处理,但是我们通常会编写一个方法对应一个servlet,那么这时候问题就出现了,一个业务最基础都离不开增删改查吧,如果我们每一个方法都写一个servlet去实现业务,代码就显得太过冗余了
比如这样:

为了简化我们的开发,SpringMvc就诞生了
让我们看看SpringMvc的简洁性

我们只需要新建一个controller类使用
@RequestMapping为每个方法都添加上对应的 访问路径
@ResponseBody声明请求体
就极大程度的简略了代码了
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>javax.servlet-apiartifactId>
- <version>3.1.0version>
- dependency>
-
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-webmvcartifactId>
- <version>5.3.9version>
- dependency>
- package config;
-
-
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- @ComponentScan("controller")
- public class springMvcConfig {
-
- }
- package config;
-
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
- import org.springframework.web.context.WebApplicationContext;
- import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
- import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
-
- //servlet启动配置类,加载SpringMvcConfig
- public class servletConfig extends AbstractDispatcherServletInitializer {
-
- //加载SpringMvc容器配置
- @Override
- protected WebApplicationContext createServletApplicationContext() {
- AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
- ctx.register(springMvcConfig.class);
- return ctx;
- }
-
- //设置SpringMvc管理哪些请求
- @Override
- protected String[] getServletMappings() {
- //所有请求都由SpringMvc处理
- return new String[]{"/"};
- }
-
- //加载Spring容器配置
- @Override
- protected WebApplicationContext createRootApplicationContext() {
- return null;
- }
- }
- package controller;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- @Controller
- @RequestMapping("/user")
-
- public class userController {
- @ResponseBody
- @RequestMapping("/select")
- public String select(){
- System.out.println("user Test....");
- return "{'model':'springMvc'}";
- }
-
- @ResponseBody
- @RequestMapping("/delete")
- public String delete(){
- System.out.println("user Test....");
- return "{'model':'springMvc'}";
- }
-
- @ResponseBody
- @RequestMapping("/update")
- public String update(){
- System.out.println("user Test....");
- return "{'model':'springMvc'}";
- }
-
- @ResponseBody
- @RequestMapping("/add")
- public String add(){
- System.out.println("user Test....");
- return "{'model':'springMvc'}";
- }
-
-
- }

测试:
直接访问目标网址

观察输出结果

到此结束~
启动服务器初始化流程

单次请求流程