• SpringMVC程序开发


    1. 什么是SpringMVC

    Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它

    的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring

    MVC”。

    2. MVC定义

    MVC 是 Model View Controller (模型视图控制器)的缩写,它是软件⼯程中的⼀种软件架构模式,

    它把软件系统分为模型、视图和控制器三个基本部分。

    在这里插入图片描述
    Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取

    数据。

    View(视图) 是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。

    Controller(控制器) 是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。

    2.1 MVC 和 Spring MVC 的关系

    MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。

    总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web

    框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求.

    3. SpringMVC项目的创建

    Spring MVC 项⽬创建和 Spring Boot 创建项⽬相同,在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项⽬。

    在这里插入图片描述

    4.学习SpringMVC目标

    学习 Spring MVC 我们只需要掌握以下 3 个功能:

    • 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。
    • 获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数。
    • 输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户。

    对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了 Spring MVC

    4.1 连接

    4.1.1 @RequestMapping

    通过RequestMapping进行连接,在SpringBoot中已经演示过了。
    在这里插入图片描述
    在这里插入图片描述

    4.1.2@GetMapping

    在这里插入图片描述

    在这里插入图片描述

    4.1.3PostMapping

    在这里插入图片描述
    在这里插入图片描述

    三者区别

    • @GetMapping 是 GET 请求
    • @PostMapping 是 POST 请求
    • @RequestMapping 既支持 GET 请求 又 支持 POST 请求

    在这里插入图片描述
    在这里插入图片描述
    当然@RequestMapping也能指定只支持一种请求

    Get

    在这里插入图片描述

    在这里插入图片描述

    Post

    在这里插入图片描述在这里插入图片描述

    5. 获取参数

    5.1 获取单个参数

    在这里插入图片描述

    在这里插入图片描述

    5.2 获取多个参数

    在这里插入图片描述
    在这里插入图片描述

    5.3 获取对象

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    5.4 后端参数重命名

    如果某天前端的参数名字与后端参数名字不一致,而你的写的代码很多了不想改了,就可以使用这个方法:
    在这里插入图片描述

    在这里插入图片描述

    修改:

    在这里插入图片描述

    在这里插入图片描述

    然而这样写会引发一个问题,当传递参数为空时,会报错:

    在这里插入图片描述

    解决办法:

    在这里插入图片描述
    在这里插入图片描述

    5.5 获取JSON对象

    当我们在前端发送一个JSON对象时,后端能否接收到呢?
    在这里插入图片描述显然并没有接收到!

    因此需要加上这个注解
    在这里插入图片描述

    注意::这里的是@RequestBody 和 类上的ResponseBody是不一样的

    在这里插入图片描述

    5.6 获取URL中的参数

    注意:这里的URL和参数部分是不同的:
    在这里插入图片描述
    我们获取的不再是?后面的参数而是/前后的参数。

    在这里插入图片描述
    在这里插入图片描述
    注意:路径参数名字需与方法参数名字相同

    5.7 上传文件

    在这里插入图片描述
    使用postman模拟一下

    在这里插入图片描述
    在这里插入图片描述

    5.8 获取cookie/session/header

    5.8.1 传统的获取cookie/header

    在这里插入图片描述
    访问后大概率是这样的,因为我们没有存储Cookie
    在这里插入图片描述添加一个即可
    在这里插入图片描述
    在这里插入图片描述

    5.8.2 更简单的获取cookie/header

    在这里插入图片描述

    5.8.3 存储session

    在这里插入图片描述

    在这里插入图片描述

    5.8.4 获取session

    在这里插入图片描述

    在这里插入图片描述

    5.8.5 更简单的获取session

    在这里插入图片描述

    6. 返回数据

    6.1 返回静态页面

    在这里插入图片描述

    在这里插入图片描述

    6.2 返回text/html

    在这里插入图片描述
    在这里插入图片描述

    6.3 返回JSON对象

    在这里插入图片描述
    在这里插入图片描述
    注意:在Spring中返回map默认就是一个json数据格式的对象。

    6.4 请求转发和请求重定向

    • 请求转发: forward 服务器帮客户进行请求转发并将结果响应给客户端, URL 地址是不变的
    • 请求重定向: redirect 服务器端将请求重新定义到要访问的地址上, URL 地址会发生改变

    请求转发和请求重定向的区别:

    • 请求转发 URL 地址不变, 因为服务器端进行转发和响应.
    • 请求重定向 URL 地址发生改变, 因为服务器端直接将请求重定向到具体的地址上
    • 使用请求转发那么有可能外部资源全部会丢失, 访问不到.
    • 请求重定向是直接重定向到 URL地址了, 所以不会存在外部资源丢失的情况
    • 重定向浏览器会发送两条请求,转发,只有一条请求。

    举个例子:

    • 请求重定向:张三找李四借钱,李四没钱,但李四告诉张三,去王五那里看看。张三借到了。结果张三跑了,这个时候,李四是不担责任了。因为钱是张三借的。
    • 请求转发:张三找李四借钱,李四没钱,但李四去找王五那里借了一些钱,然后借给给了张三。
      结果张三跑了,王五找谁还?肯定找李四啊!因为是李四找他借的钱。
  • 相关阅读:
    acwing 843. n-皇后问题
    JAVA 版小程序商城免费搭建 多商家入驻 直播带货 商城系统 B2B2C 商城源码之 B2B2C产品概述
    ElasticSearch系列——ElasticSearch8.5介绍、安装、Http方式使用
    vue-element-admin npm install报错
    .net core 上传文件大小限制
    差分矩阵 C++实现
    QT 初识多线程
    c++1237. 找出给定方程的正整数解,四种解法(二分+有限状态机)
    Java核心篇,二十三种设计模式(十九),行为型——观察者模式
    使用VSCODE配置GO语言开发环境
  • 原文地址:https://blog.csdn.net/qq_59689127/article/details/126364894