相关推荐recommended
初识SpringMVC -- SpringMVC快速入门保姆级教程(一)
作者:mmseoamin日期:2023-12-14

文章目录

  • 前言
  • 发现宝藏
  • 一、初识SpringMVC
    • 1.认识SpringMVC
    • 2.SpringMVC入门案例
    • 3.SpringMVC入门编码的一般步骤
    • 4.入门案例涉及的知识点
    • 5.入门案例工作流程

      前言

      为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。

      (博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)


      发现宝藏

      前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

      一、初识SpringMVC

      1.认识SpringMVC

      1. SpringMVC是什么

      Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架。

      1. SpringMVC的优点
      • SpringMVC框架提供了一整套完善的组件。

        不同于以前框架只提供接口,然后让使用者自己根据接口写实现类来实现功能,SpringMVC提供了一整套完善的组件,可以直接使用。这就相当于以前的框架只给你提供设计图纸,你需要根据设计图纸自己把工具造出来,而现在SpringMVC直接给你一套现成的工具箱,里面有你用得到的各种工具。而且使用SpringMVC框架提供这些工具也巨简单,通过一些简单的注解就搞定了,不需要编写繁琐冗长的代码,简直比夏天喝雪碧还要爽。

        • SpringMVC是以强大的Spring容器为基础的框架。

          如果同学你使用过Spring容器,那你一定知道Spring容器的对象托管功能有多么的好用。它不需要你自己去创建和释放对象,Spring容器帮你全搞定! 同样地,能够放入Spring容器里面的这个SpringMVC工具箱,里面各种工具类的管理也是不需要操心的。而这省心省力的优点,是其他框架都没有的。

          • 框架的配置简单又不失灵活性.

            SpringMVC框架的常用配置项就已经涵盖了项目中80%的配置需求,简单的项目甚至可以做到零配置,拿过来就用。

            • 代码的可重用性很高。

              翻译成大白话就是,一个成熟的,上线稳定运行过的SpringMVC项目,经过简单修改,甚至不用修改,就可以作为另一个新项目开发的基础。这样能在开发新项目时省很多力气。

              • 可扩展性好。

                如果SpringMVC框架提供的工具不能100%满足你的需求,你需要定制开发,SpringMVC框架同样也提供了相应的接口,可以进行工具的升级。这样你在遇到强力精英怪的时候,照样能用SpringMVC框架打败它。

                1. SpringMVC三层架构

                Spring web MVC 框架提供了模型(Model)- 视图(View)- 控制(Controller)的体系结构和可以用来开发灵活、松散耦合的 web 应用程序的组件。MVC 模式导致了应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑)的分离,同时提供了在这些元素之间的松散耦合。

                模型封装了应用程序数据,并且通常它们由 POJO 组成。
                视图主要用于呈现模型数据,并且通常它生成客户端的浏览器可以解释的 HTML 输出。
                控制器主要用于处理用户请求,并且构建合适的模型并将其传递到视图呈现。
                

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第1张

                1. 学习目标

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第2张

                2.SpringMVC入门案例

                1. 创建maven模块,选择webapp开发模板(Archetype)

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第3张

                2.右键打开模块设置,创建一个目录java,标记为Source源码,并将Language level等级设置成8

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第4张

                1. 在pom.xml配置文件中导入SpringMVC以及Servlet坐标

                (此处先将plugins中的插件都先删除)

                 
                      javax.servlet
                      javax.servlet-api
                      3.1.0
                      provided
                    
                    
                      org.springframework
                      spring-webmvc
                      5.2.10.RELEASE
                    
                
                1. 创建SpringMVC控制器类
                //定义表现层控制器bean
                @Controller
                public class UserController {
                    //设置映射路径为/save,即外部访问路径
                    @RequestMapping("/save")
                    //设置当前操作返回结果为指定json数据(本质上是一个字符串信息)
                    @ResponseBody
                    public String save(){
                        System.out.println("user save ...");
                        return "{'info':'springmvc'}";
                    }
                }
                
                1. 初始化SpringMVC环境(同Spring环境),设定SpringMVC加载对应的bean
                //springmvc配置类,本质上还是一个spring配置类
                @Configuration
                @ComponentScan("org.example.controller")
                public class SpringMvcConfig {
                }
                
                1. 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求
                //web容器配置类
                public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
                    //加载springmvc配置类,产生springmvc容器(本质还是spring容器)
                    protected WebApplicationContext createServletApplicationContext() {
                        //初始化WebApplicationContext对象
                        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
                        //加载指定配置类
                        ctx.register(SpringMvcConfig.class);
                        return ctx;
                    }
                    //设置由springmvc控制器处理的请求映射路径
                    protected String[] getServletMappings() {
                        return new String[]{"/"};
                    }
                    //加载spring配置类
                    protected WebApplicationContext createRootApplicationContext() {
                        return null;
                    }
                }
                
                1. 在pom.xml中添加tomcat插件,配置端口号为80
                 
                    org.apache.tomcat.maven
                    tomcat7-maven-plugin
                    2.1
                    
                      80
                      /
                    
                 
                
                1. 启动服务器类型选择maven,运行命令选tomcat-run

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第5张

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第6张

                1. 运行结果

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第7张

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第8张

                3.SpringMVC入门编码的一般步骤

                1. 使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第9张

                1. 创建SpringMVC控制器类(等同于Servlet功能)

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第10张

                1. 初始化SpringMVC环境(同Spring环境),设定SpringMVC加载对应的bean

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第11张

                1. 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第12张

                4.入门案例涉及的知识点

                1. @Controller注解

                名称:@Controller

                类型:类注解

                位置:SpringMVC控制器类定义上方

                作用:设定SpringMVC的核心控制器bean

                范例:如下

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第13张

                1. @ResponseBody注解

                名称:@ReaponseBody

                类型:方法注解

                位置:SpringMVC控制器类定义上方

                作用:设置当前控制器方法响应内容为当前返回值,无懈解析

                范例:如下

                初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第14张

                1. SpringMVC入门程序开发总结(1+N)
                • 一次性工作

                  1.创建工程,设置服务器,加载工程导入坐标

                  2.创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径

                  3.SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean)

                  • 多次性工作

                    1.定义处理请求的控制器类

                    2.定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)

                    3.示例如下:

                    //定义表现层控制器bean
                    @Controller
                    public class UserController {
                        //设置映射路径为/delete,即外部访问路径
                        @RequestMapping("/delete")
                        //设置当前操作返回结果为指定json数据(本质上是一个字符串信息)
                        @ResponseBody
                        public String delete(){
                            System.out.println("user delete ...");
                            return "{'info':'springmvc666'}";
                        }
                    }
                    

                    初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第15张

                    1. 初始化Servlet容器

                    AbstractDispatcherServletInitializer 类是SpringMVC提供的快速初始化Web30容器的抽象类,它提供三个接口方法供用户实现

                    • createServletApplicationContext()方法

                      创建Servlet容器时,加载 SpringMVC 对应的bean并放入 WebApplicationContext 对象范围中,而 WebApplicationContext 的作用范围为 ServletContext 范围,即整个web容器范围,示例代码如下:

                          //加载springmvc配置类,产生springmvc容器(本质还是spring容器)
                          protected WebApplicationContext createServletApplicationContext() {
                              //初始化WebApplicationContext对象
                              AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
                              //加载指定配置类
                              ctx.register(SpringMvcConfig.class);
                              return ctx;
                          }
                      
                      • getServletMappings()方法方法

                        设定SpringMVC对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到 SpringMVC进行处理,示例代码如下:

                           //设置由springmvc控制器处理的请求映射路径
                            protected String[] getServletMappings() {
                                return new String[]{"/"};
                            }
                        
                        • createRootApplicationContext()方法

                          如果创建Servlet容器时需要加载非SpringMVc对应的bean,使用当前方法进行,使用方式同createServletApplicationContext(),示例代码如下:

                               //加载spring配置类
                              protected WebApplicationContext createRootApplicationContext() {
                                  return null;
                              }
                          

                          5.入门案例工作流程

                          1. 启动服务器初始化过程

                          1.服务器启动,执行ServletContainersInitConfig类,初始化web容器

                          2.执行createServletApplicationContext方法,创建了WebApplicationContext对象

                          3.加载SpringMvcConfig

                          4.执行@ComponentScan加载对应的bean

                          5.加载UserController,每个@RequestMapping的名称对应一个具体的方法

                          6.执行getServletMappings方法,定义所有的请求都通过SpringMVC

                          初识SpringMVC -- SpringMVC快速入门保姆级教程(一),在这里插入图片描述,第16张

                          1. 单次请求过程

                          1.发送请求localhost/save

                          2.web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理

                          3.解析请求路径/save

                          4.由/save匹配执行对应的方法save()

                          5.执行save()

                          6.检测到有@ResponseBody直接将save()方法的返回值作为响应求体返回给请求方

                          `博客内容借鉴了bilibili黑马程序员SSM课程资料`
                          # 总结

                          欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下作者,后续还会更新mybatis, springboot,maven高级,微信小程序,等前后端内容的学习笔记。

                          (博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)