码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spirng MVC——获取参数详解


    文章目录

    • 1. 什么是 Spirng MVC
      • 1.1 MVC 定义
      • 1.2 MVC 和 Spring MVC 的关系
    • 2. 创建Spring MVC 项目
    • 3. Spring MVC 学习目标
      • 3.1 实现用户和程序的映射
        • 方法1:@RequestMapping("/xxx")
        • 方法2:使用 @POSTMapping("/xxx")
        • 方法3:使用 @GETMapping("/xxx")
      • 3.2 服务器端获取用户请求参数
        • 1. 获取单个参数
        • 2. 获取多个参数
        • 3. 获取对象
        • 4. 后端参数重命名(后端参数映射)@RequestParm
        • 5. 使用 Postman 模拟发送 JSON 数据给服务器
        • 6. 获取 URL 地址中的参数
        • 7. 使用 Postman 模拟上传文件
        • 优化 和 注意事项:
          • 扩展:不同运行平台的配置文件设置和读取
        • 优化后使用 Postman 上传文件
      • 3.3 获取Cookie/Session/header
      • 1. 获取 Cookie
        • 1.1 servler 获取 Cookie 的方法
        • 1.2 使用 @CookieValue("xxx")
      • 2. 获取 Header(请求头)里面的信息
        • 2.1 方法1:使用 Servlet 获取 Header
        • 2.2 方法2: 使用 @RequestHeader("key")来获取 Header
      • 3. 存储和获取 Seesion
        • 3.1 先存储 Seesion
        • 3.2 获取 Seesion 方法一
        • 3.3 获取 Seesion 方法二
    • tips:关于 idea 文件夹展开问题

    1. 什么是 Spirng MVC

    Spring MVC 是一个基于 MVC 设计模式 和 Servlet API 实现的 Web 项目,同时 Spring MVC 又是 Spring 框架中的一个 WEB 模块,它是随着 Spring 的诞生而存在的一个框架。

    1.1 MVC 定义

    MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构模式,它把软件系统(项目)分为 模型,视图和控制器 三个基本部分。

    在这里插入图片描述

    • Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存储数据
    • View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的
    • Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据库,控制用户输入,并向模型发送数据

    1.2 MVC 和 Spring MVC 的关系

    MVC 是一种设计思想,而 Spring MVC 是一种具体的实现框架。

    2. 创建Spring MVC 项目

    基于Spirng Boot 框架添加一个 Spring Web(它使用的就是 Spring MVC)依赖,此时项目就变成了 Spring MVC 项目

    在这里插入图片描述

    在这里插入图片描述
    3.
    在这里插入图片描述
    4.
    在这里插入图片描述

    3. Spring MVC 学习目标

    3.1 实现用户和程序的映射

    在浏览器 输入 URL 地址之后,能够在程序中匹配到相应方法

    方法1:@RequestMapping(“/xxx”)

    在这里插入图片描述

    @RequesMapping 特征:

    1.@RequestMapping 既可以修饰类(可选)也能修饰方法
    2.默认情况下 @RequestMapping 既支持 POST 请求,也支持 GET 请求

    @RequsetMapping 参数拓展:

    在这里插入图片描述

    方法2:使用 @POSTMapping(“/xxx”)

    只支持 POST 类型的访问方式:

    在这里插入图片描述

    在这里插入图片描述

    方法3:使用 @GETMapping(“/xxx”)

    只支持 GET 类型的访问形式:
    在这里插入图片描述

    3.2 服务器端获取用户请求参数

    1. 获取单个参数

    先创建个实体类,我们要获取实体类中的信息:

    在这里插入图片描述

    获取单个参数:

    在这里插入图片描述

    在URL 中 不输入 id ,结果如下:

    在这里插入图片描述

    输入 id 结果如下:

    在这里插入图片描述

    前端输入 参数名 和 后端的不一致,结果如下:

    在这里插入图片描述

    2. 获取多个参数

    在这里插入图片描述

    当输入 username 和 password 为空时,结果如下:

    在这里插入图片描述

    当手动输入 username 和 password 结果如下:

    在这里插入图片描述

    3. 获取对象

    在这里插入图片描述

    不传参结果如下:

    在这里插入图片描述

    传参结果如下:

    在这里插入图片描述

    4. 后端参数重命名(后端参数映射)@RequestParm

    某些特殊的情况下,前端传递的 key 和我们后端接收的 key 可以不一致,比如前端传递了一个name 给后端,而后端又是有 username 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用 @RequestParam 来重命名前后端的参数值,将前端传递的 name 重命名为 username

    具体代码如下:

    1.当我们前端传递的 key 为 username 时候,后端能够接收到,具体如下:

    在这里插入图片描述

    2.当我们前端传递的 key 为 name(与后端不一致) 时候,后端是无法接收到前端传递过来的参数的,具体如下:
    在这里插入图片描述
    3.为了解决这个问题,我们使用 @RequestParm 来重命名

    在这里插入图片描述

    注意:

    如果在参数中添加 @RequestParam 注解,那么前端一定要传递此参数,否则就会报错,如果想要解决此问题,可以给 @RequestParam 里面添加 required = false

    当前端不传递 此参数 如下:

    在这里插入图片描述

    当我们不使用 @RequestPrarm 之后,此处不传,也不会报错

    在这里插入图片描述

    当我们不传递,但是又不想报错时候,需要加上 required = false,如下:

    在这里插入图片描述

    5. 使用 Postman 模拟发送 JSON 数据给服务器

    使用 Postman 模拟发送 JSON 数据给服务器,如下:

    在这里插入图片描述
    我们发现 后端并不能接收 json 的数据:

    在这里插入图片描述
    使用 Fiddler 抓包,查看 请求:

    在这里插入图片描述

    查看响应:

    在这里插入图片描述
    我们发现响应正文中并没有我们发送的 json 数据

    服务器端实现 JSON 数据的接收需要使用 @RequestBody 注解

    在这里插入图片描述

    此时我们在去使用 Postman 来模拟发送 json 数据,这个时候,后端就能接收到 json 数据了

    在这里插入图片描述

    6. 获取 URL 地址中的参数

    我们先来看一下 URL 的组成:

    在这里插入图片描述
    比如给出一段 URL,我们 改 如何 获取 URL地址中的参数呢?

    localhost:8080/user/hero/66/影魔

    在这里插入图片描述

    7. 使用 Postman 模拟上传文件

    1. 上传文件使用到的注解为: @RequestPart(“前端传递的名称”),使用 MultipartFile 接收

    在这里插入图片描述

    2.使用 Postman 发送请求,验证是否上传成功
    在这里插入图片描述
    3.打开文件夹查看是否成功
    在这里插入图片描述
    ok 没问题,美美哒~
    在这里插入图片描述

    优化 和 注意事项:

    刚刚的代码我们是把上传图片的名称写固定了的,如果我们上传其他的图片,名称也是我们写固定了的,所以我们要进行优化!

    扩展:不同运行平台的配置文件设置和读取

    1.新建不同平台的配置文件

    命名规则:application-平台.yml(properties)

    application.yml 主配置文件
    application-dev.yml 代表 开发环境 平台
    application-prod.yml 代表 生产环境 平台

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2.在主配置文件中设置配置的运行文件

    在这里插入图片描述

    3.读取不同平台的配置文件
    在这里插入图片描述

    结果如下:

    在这里插入图片描述

    优化后使用 Postman 上传文件

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

    利用 Postman 尝试一下:

    在这里插入图片描述

    结果如图:

    在这里插入图片描述

    3.3 获取Cookie/Session/header

    1. 获取 Cookie

    1.1 servler 获取 Cookie 的方法

    在这里插入图片描述

    1.2 使用 @CookieValue(“xxx”)

    在这里插入图片描述

    结果如下:

    在这里插入图片描述

    2. 获取 Header(请求头)里面的信息

    2.1 方法1:使用 Servlet 获取 Header

    在这里插入图片描述

    2.2 方法2: 使用 @RequestHeader(“key”)来获取 Header

    在这里插入图片描述

    3. 存储和获取 Seesion

    存储的方式只有一种,但是获取的方式有两种:

    在这里插入图片描述

    3.1 先存储 Seesion

    Servlet 和 SpringMVC 操作方式是一样的

    在这里插入图片描述

    在这里插入图片描述

    3.2 获取 Seesion 方法一

    Servlet 模式获取:

    在这里插入图片描述

    3.3 获取 Seesion 方法二

    在这里插入图片描述

    tips:关于 idea 文件夹展开问题

    在这里插入图片描述


  • 相关阅读:
    论文翻译:2020_DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement
    js【详解】数据类型原理(含变量赋值详解-浅拷贝)
    C++的在vs上面用ffmpeg做音频流捕捉的代码
    说大话还是真实力,Rust是被炒“火”的吗
    纷享销客联合B.P商业伙伴携手30+企业CEO走进南天信息
    【元宇宙欧米说】WEB3.0投融资市场观察
    Hyperf crontab 定时任务组件
    6. 【图的应用1】最⼩⽣成树(Prim、kruskal)、最短路径(BFS、Dijkstra、Floyd{含有快速求解})
    SpringBoot第 15 讲:SpringSecurity
    基于Spring Boot的留学服务管理平台的设计与开发-计算机毕业设计源码
  • 原文地址:https://blog.csdn.net/Biteht/article/details/128041070
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号