Spring MVC 系列2 -- 创建连接、获取与输出

news2025/1/11 2:47:01

        上个系列总结了关于Spring MVC 项目的一些基础 ,Spring MVC就是在Spring Boot的基础上引入了Spring Web依赖.接下来就进行总结一下Spring MVC项目的创建,连接,获取参数,输出响应.

目录

1. Spring MVC 创建和连接

1.1 创建Spring MVC 项目实现与浏览器互通

1.2 @RequestMapping注解 

2. 获取参数 

2.1 传递单个参数​编辑

2.2 传递对象

2.3 表单参数传递/传递多个参数(⾮对象)​编辑

2.4 后端参数重命名(后端参数映射)

2.5 @RequestBody 接收JSON对象

2.6 获取URL中参数@PathVariable

2.7 上传文件@RequestPart

2.8  获取Cookie/Session/header

3.  返回数据

3.1 返回静态页面

3.2 返回json

3.3 请求转发或请求重定向

3.4 @ResponseBody 说明

3.5 组合注解 @RestController


1. Spring MVC 创建和连接

        Spring MVC 项目创建和 Spring Boot 创建项目相同(Spring MVC 使⽤ Spring Boot 的方式创建),在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项目。在 Spring MVC 中使用@RequestMapping 来实现 URL 路由映射,也就是浏览器连接程序的作用。

1.1 创建Spring MVC 项目实现与浏览器互通

写一个容器类,实现用户到 Spring 程序的互联互通.

package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@RequestMapping("/test") // 路由注册
@ResponseBody // 响应的主体是数据而不是一个静态页面
@Controller  // 将Bean注入到框架中
//@RestController // @ResponseBody + @Controller
// 以上三个缺一不可

public class TestController {
    @RequestMapping("/hi")
    public String SayHi(String name){
        return "hi: " + name;
    }
}

当访问地址:http://localhost:8080/test/hi?name="张三"时,就会输出hi:张三

1.2 @RequestMapping注解 

  • @RequestMapping 是 Spring Web 应用程序中最常被用到到的注解之⼀,它是⽤来注册接口的路由映射的。 
  • @RequestMapping 即可修饰类,也可以修饰方法,当修饰类和⽅法时,访问的地址是类 + 方法。
  • @RequestMapping 也可以直接修饰方法

那么使用 @RequestMapping是进行发送的是Post请求还是Get请求呢?

通过抓包软件可以进行抓包,@RequestMapping默认的是Get请求,但是可以通过设置属性method进行设置.

 也可以不进行设置属性来设置不同类型的方法.

@GetMapping 和 PostMapping

上面两个注解可以直接设置路由的方法类型.

2. 获取参数 

2.1 传递单个参数

2.2 传递对象

传递一个Personl类型的对象

 PostMan构造请求

 控制台打印

2.3 表单参数传递/传递多个参数(⾮对象)

 控制台

2.4 后端参数重命名(后端参数映射)

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

 2.5 @RequestBody 接收JSON对象

 

2.6 获取URL中参数@PathVariable

2.7 上传文件@RequestPart

2.8  获取Cookie/Session/header

1. 获取了Request对象,在SpringMVC中内置了httppSerlvetRequest 和 httpSerlvetResponse 

 访问设置Cookie的地址

控制台打印,获取的cookies

 也可以指定cookies进行返回

获取header 

 2. 获取header 中的userAgent

3. 获取会话session 

 创建会话成功

 获取会话成功

 4. 根据指定的session进行返回

3.  返回数据

3.1 返回静态页面

我们之前加了注解@ResponseBody所以返回的是数据本身,不加这个注解返回的是静态页面

 

 

 抓包结果的响应信息

3.2 返回json

 

3.3 请求转发或请求重定向

1. forward VS redirect

return 不但可以返回⼀个视图,还可以实现跳转,跳转的⽅式有两种:

  • forward 是请求转发;
  • redirect:请求重定向。

2. 区分forward 和  redirect

举例说明:

forward(请求转发)和 redirect(请求重定向)的区别,举例来说,例如,你告诉你妈妈,你想吃辣条,如果你妈妈,说好,我帮你去买,这就是 forward 请求转发;如果你妈妈让你⾃⼰去买,那么就是请求 redirect 重定向。
 

3. forward 和 redirect 具体区别如下:

  • 1. 请求重定向(redirect)将请求重新定位到资源;请求转发(forward)服务器端转发。
  • 2. 请求重定向地址发生变化,请求转发地址不发生变化。
  • 3. 请求重定向与直接访问新地址效果⼀致,不存在原来的外部资源不能访问;请求转发服务器端转发有可能造成原外部资源不能访问(发生数据丢失)。
  • 4. 请求转发如果资源和转发的页面不在⼀个目录下,会导致外部资源不可访问,而重定向就可以进行访问

3.4 @ResponseBody 说明

  • @ResponseBody 返回的值如果是字符会转换成 text/html,如果返回的是对象会转换成application/json 返回给前端。
  • @ResponseBody 可以用来修饰方法或者是修饰类,修饰类表示类中的所有方法都会返回 html 或者json,而不是视图

3.5 组合注解 @RestController

@RestController = @Controller + @ResponseBody
 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子锁语音芯片方案,低功耗声音提示ic,WT588F02B-8S

随着科技的不断发展,电子锁已成为现代社会中,安全性和便利性并存的必备设备。如何为电子锁行业增添智能化、人性化的功能已成为行业内的热门话题。 在这个迅速发展的市场中,深圳唯创知音推出了一款语音交互方案——WT588F02B-8S 低功耗声音提…

超市商品信息管理系统设计与实现(论文+源码)_kaic

摘 要 目前运用广泛的互联网相关技术普遍进行了推广以及应用,基于互联网技术实现的也超市管理系统软件的应用大大提高了现代超市的管理水平和经济效益,取得了前所未有的进步,在人们的互联网生活中占有相当重要的地位。在21世纪伴随计算机网络…

【miniQMT实盘量化1】什么是miniQMT?

前言 本篇是这个系列的开篇,也是扫盲文章,介绍什么是miniQMT,以及它的优势。 从交易接口说起 总所周知,量化大概分四个部分:数据、回测、模拟、实盘。每个部分都很重要,但最关键的,还是实盘&…

智慧水利水电未来发展趋势

随着人口的增加和经济的发展,水资源日益紧缺,水利水电工程的发展前景广阔。在可持续发展、数字化、智能化、高效节能将有极致的发展趋势。 在未来,水利水电工程将更加注重可持续发展,即既满足人类的水电需求,又保护生…

使用claude 2的文档分析功能

复制一段较长的文本内容,比如json文件。 https://zh.annas-archive.org/db/aarecord/md5:ba19176859126615bba9f35110f7492e.json 打开claude 2网页。 在输入框中粘贴内容,会自动生成一个past.txt图标。 输入要问的问题,按回车。 结果如下&a…

让全彩LED显示屏更高清的5个方法

随着社会的发展,人们对LED显示屏画面的显示效果要求越来越高,高清、超高清显示逐渐成为市场主流。高清视频画面给人带来的震撼效果是很强烈的,其所显示的内容相对传统的视频画面更具吸引力,更能满足人们对高品质视听的美好追求。 …

Picgo使用Gitee平台搭建图床照片无法显示

1.问题 使用Hexo框架搭建个人博客,发现博客中图片无法显示 2.问题分析 查看图床,发现相册中图片无法显示 查阅多方网站,发现Gitee与Picgo配合使用时,图片文件不能大于1M。 这主要因为Gitee查阅超过1M的文件需要登录的权限 。而…

Object.fromEntries()将键值对列表转换为一个对象

Object.fromEntries() 静态方法将键值对列表转换为一个对象 将 Array 转换成对象: let arr [["name","张三"],["age","40"]] let obj Object.fromEntries(arr); console.log(obj);将 Map 转换成对象: let …

如何添加域名解析

1、域名解析(CNAME记录) 登录所在平台的DNS解析管理 me:域名控制面板 (dnsmsn.com) 第一条的解析记录为 第二条www的解析记录为 为什么要添加两条解析记录? 一条是记录,一条是www记录,这分别代表两个最常用的域名…

基于知识图谱的电影知识问答系统:训练TF-IDF 向量算法和朴素贝叶斯分类器、在 Neo4j 中查询

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…

SU-03T语音模块的使用

目录 语音模块配置 1. 进入语音模块官网 http://www.smartpi.cn/#/,配置词条和识别后的串口输出指令 2.记录下相关指令以及上图的识别词条,方便固件烧写后的调试 3.打开固件烧写工具 4. 进行固件烧写,烧录完成后先和电脑串口调试助手配合…

mp4视频太大怎么压缩?简单视频压缩方法分享

视频压缩是一种常见的操作,它可以起到很多有用的效果。通过压缩视频,我们可以减小视频文件的大小,从而节省存储空间和传输带宽。此外,压缩后的视频可以更快地加载和播放,提高观看体验,特别是对于网络传输较…

【数据分享】1929-2022年全球站点的逐月最大持续风速数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…

【数据结构】线性表的定义及基本操作

文章目录 前言线性表的定义线性表的基本操作基本操作其他常用操作 总结 前言 数据结构的三要素是逻辑结构、数据的运算、存储结构(物理结构),存储结构不同,运算的实现方式也不同。 本次文章包括线性表的定义和基本操作&#xff0…

WEB阶段_CSSJS篇(附代码笔记)

&#xff08;一&#xff09;、使用DIVCSS布局首页 1、HTML的块标记 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><div>div1</div><div>div2</div><…

如何用Three.js + Blender打造一个web 3D展览馆

作者&#xff1a;vivo 互联网前端团队- Wei Xing 运营活动新玩法层出不穷&#xff0c;web 3D炙手可热&#xff0c;本文将一步步带大家了解如何利用Three.js和Blender来打造一个沉浸式web 3D展览馆。 一、前言 3D展览馆是什么&#xff0c;先来预览下效果&#xff1a; 看起来像…

Maven -- <dependencyManagement>管理子项目版本

背景&#xff1a; 一个旧项目&#xff0c;想使用mybatis-plus&#xff0c;想着这是比较基础的依赖包&#xff0c;就在父项目中添加对应依赖&#xff0c;如下: <!-- 依赖声明 --><dependencyManagement><dependencies><!-- mybatis-plus 依赖配置 -->&l…

第四章:C++模板初阶

系列文章目录 文章目录 系列文章目录前言泛型编程函数模板函数模板概念 函数模板格式函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 总结 前言 C通过泛型编程来实现函数模板和类模板。 泛型编程 如何实现一个通用的交换函数呢&…

图像分割的简史:从CNN到掩模R-CNN

一、说明 在 Athelas&#xff0c;我们使用卷积神经网络 &#xff08;CNN&#xff09; 不仅仅是分类&#xff01;在这篇文章中&#xff0c;我们将看到如何在图像实例分割中使用CNN&#xff0c;并取得很好的效果。 自从 Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever 在 2012…

Windows bat实现删除文本中的 空行、空格、制表符、最后一行空行

文章目录 一、准备测试数据二、通过for /f实现1. 删除仅含换行符的空行2. 删除所有空白行3. 删除所有空白行以及非空白行左侧的空格和制表符4. 删除所有空白行以及非空白行两侧的空格和制表符5. 删除所有空白行以及所有空格和制表符 三、通过findstr实现1. 删除仅含换行符的空行…