Spring Web MVC
目录
一.简介
二.建立连接(客户端和服务器)
三.请求
1.传递单个参数
2.传递多个参数
3.对象
4.数组/集合
5.JSON
6.URL参数
7.上传文件
(2)获取session
9.设置header
四.响应
1.返回静态页面
2.返回数据
3.返回HTML代码片段
4.返回JSON
5.设置状态码
6.设置Header
一.简介
Spring Web MVC是包含在Spring框架中的用来构造web项目的框架,底层基于Servlet API.
(之前使用的SpringBoot也是创建Spring MVC的一种方式)
MVC(model view controller):把一个项目分成三部分,三部分之间的关系如下
Spring进行实现MVC模式,称为Spring MVC
二.建立连接(客户端和服务器)
@Requestmapping (路由映射):可以修饰方法,也可以修饰类。
访问地址:类的路径+方法路径
修饰方法
修饰类
在postman中观察可得:@Requestmapping支持get请求、post请求...
当想要指定一个具体的方法时,在代码中进行调整。
三.请求
1.传递单个参数
2.传递多个参数
发送请求的参数名称可以调换
注意:在代码中定义类型尽量使用包装类型(int的包装类为Integer),使用基本类型时,当输入的变量为空时会报错,而包装类型会显示为空。
3.对象
单独定义一个对象类,更方便后期根据需求修改代码。
package com.example.demo.controller;public class Person {Integer id;String name;Integer age;@Overridepublic String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}
后端参数重命名
前端传参是@requesPrama()中的
4.数组/集合
数组
当请求中同一个参数有多个时,浏览器就会帮我们封装成一个数组。
集合
默认传递的参数是数组形式,要是想要传递一个集合的形式,需要在参数前面加上@RequestParam
5.JSON
json本质上是一个字符串,表示对象的字符串。
传递json数据,需要使用@RequestBody
6.URL参数
获取一个url中的参数需要一个@PathVariable,获取多个url中的参数需要多个@PathVariable
需要注意顺序,顺序要与参数相匹配,参数个数也需要匹配
URL参数中的重命名
7.上传文件
@RequestPart
将图片上传到指定位置
8.获取cookie和session
(1)获取cookie
1)spring中获取指定个数的cookie,使用@CookieValue
2)获取多个cookie的方式(不是spring,采用最原始的方式,在控制台获取value值)
//获取多个cookie的方式@RequestMapping("getCookie")public String getCookie(HttpServletRequest request){Cookie[] cookies=request.getCookies();
// 两种写法
// for (Cookie cookie : cookies) {
// System.out.println(cookie.getName()+":"+cookie.getValue());
// }//空指针异常处理if(cookies!=null){Arrays.stream(cookies).forEach(cookie -> {System.out.println(cookie.getName()+":"+cookie.getValue());});}return "获取cookie成功";}
(2)获取session
1)普通方式
//设置session@RequestMapping("/setSession")public String setSession(HttpServletRequest request){//创建sessionHttpSession session= request.getSession();//给session赋值session.setAttribute("username","swy");return "success";}//获取session@RequestMapping("/getSession")public String getSession(HttpServletRequest request){//session默认为true,没有session会自动创建一个,设置成false避免自动创建HttpSession session= request.getSession(false);if(session!=null){String username=(String) session.getAttribute("username");return "登录用户:"+username;}return "session为空!";
2)spring方式
@SessionAttribute
@RequestMapping("/getSession2")//默认是一个必传参数public String getSession2(@SessionAttribute(required = false) String username){return "username:"+username;}
3)使用HttpSession的方式
9.设置header
1)原始方式
2)spring方式
@RequestHeader
以上:
1.传递数组:同一个请求参数有多个时,会自动封装成数组
2.传递集合:@RequestParam
3.传递JSON:@RequestBody
4.上传文件:@RequestPart
5.Cookie :@CookieValue
6.Session:@SessionAttribute
7.Header:@RequestHeader
8.url:@PathVariable
9.文件:@RequestPart
四.响应
1.返回静态页面
1)创建一个简单的html页面
2)返回该页面
@Controller和@RestController
2.返回数据
@ResponseBody
可以修饰类、可以修饰方法。修饰类的时候,表示这个类下的所有方法,返回的均为数据。修饰方法时,表示该方法返回的是数据。
如果一个类中返回的都是数据则把注释加在类上,如果一个类中只有相对应的方法中返回数据,则把该注释添加在相对应的方法上。
3.返回HTML代码片段
4.返回JSON
当返回的接口是String类型、Integer类型时,content-Type是text/html
当接口返回的是对象/Map时,content-Type自动设置成application/json
这里举例是返回一个对象:
5.设置状态码
设置状态码与页面展示无关
6.设置Header
平时很少用到
举例:设置header的返回类型属性:
举例:自定义header属性
相关文章:

Spring Web MVC
目录 一.简介 二.建立连接(客户端和服务器) 三.请求 1.传递单个参数 2.传递多个参数 3.对象 4.数组/集合 5.JSON 6.URL参数 7.上传文件 8.获取cookie和session (1)获取cookie (2)获取session …...

Debian系列的Linux发行版上部署wvp
Debian系列的Linux发行版上部署wvp 环境搭建1.Debian系列的Linux发行版上安装nginx2.安装mysql设置mysql密码修改权限sudo mysql ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)配置相关navicat 连接不上 报错 10061navicat 连接报错 1130 -…...

无人智能柜:经营成本低,运维智能化
在现代商业领域中,无人智能柜正逐渐崭露头角,成为一种具有前景的商业模式。其独特之处在于经营成本的低廉性和运维过程的智能化。相较于传统的便利店等实体店铺,无人智能柜在运营过程中不仅能够降低成本,还能够实现高效的运维管理…...

java.lang.UnsupportedOperationException 关于Arrays.asList问题解决
解析String 字符串为List集合ArrayList<String> itemsList Arrays.asList(items.split("\\|")List<String> itemsList Arrays.asList(items.split("\\|")final Iterator<String> iterator itemsList.iterator();while (iterator.hasNex…...

2023.11.23 云服务器实现 Spring Boot 项目文件上传并访问
环境介绍 云服务器:京东云云服务器系统: CentOS 7.9JDK 版本:1.8Spring Boot 版本:2.7.17 具体步骤 步骤一 首先我们得先创建一个 Spring Boot 项目 创建如下目录结构 关于如何创建一个 Spring Boot 项目 请点击下方链接详细了解 …...
SAP实现多个统御科目:特殊总账SGL+备选统驭科目Alternative Reconciliation Accounts
以前只知道特别总账。学习了 客商的每个公司视图主数据唯一分配一个统驭科目。一般情况下,客商经常发生的业务对应的总帐科目设为统驭科目。 客户设置的统驭科目:应收账款 供应商设置的统驭科目:应付账款 除了经常的销售和采购业务对应应收和…...

【数据分享】2023年我国省市县三级的瞪羚企业数量(免费获取/Excel/Shp格式)
企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平!比如一个城市的金融企业较多,那这个城市的金融产业肯定比较发达;一个城市的制造业企业较多,那这个城市的制造业肯定比较发达。 之前我们给大家分享了…...

用于计算机屏幕安全摄像头系统:Screen Anytime Crack
Screen Anytime 是一款软件,旨在自动将整个用户会话或 PC/服务器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 会话的屏幕活动记录到视频日志文件中,以用于记录、审核和监控目的。通过重播其高度压缩的视频,您可以轻松回顾单台计算机或一组服务器/PC …...

Redis深入理解-Socket连接建立流程以及文件事件处理机制
Redis Server 运行原理图 Redis 服务器中 Socket 网络建立以及文件事件模型 一个 redis 单机,可以抗几百上千的并发,这里的并发指的就是同时可以有几百个 client 对这个 redis server 发起请求,都需要去建立网络连接,同时间可能会…...
Docker run 命令
docker run :创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明: -a stdin:指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR三项; -d:后台运行容器&am…...
Vue中的$nextTick的作用
在 Vue 中,当某些数据发生变化时,DOM 并不会立即更新。相反,Vue 会在下一个事件循环周期(microtask)中异步执行更新,这样可以避免频繁的 DOM 操作。然而,有时候我们需要在 DOM 更新后执行一些操…...
浅谈Linux bash脚本----getopts获取脚本POSIX标准传参
getopts是一个在 Shell 脚本中用于解析命令行选项的内置命令。 它用于处理脚本的参数,使得脚本可以接受不同的选项和参数,并根据用户提供的输入采取相应的操作。 getopts 命令基于 POSIX 标准,并且通常与 while 循环结合使用。它的语法如下…...

PyCharm玩转ESP32
想必玩ESP32的童鞋都知道Thonny,当然学Python的童鞋用的更多的可能是PyCharm和VsCode Thonny和PyCharm的对比 对于PyCharm和VsCode今天不做比较,今天重点说一下用PyCharm玩转ESP32,在这之前我们先对比下Thonny和PyCharm的优缺点 1、使用Tho…...
uniapp自定义导航栏返回按键
目录 htmljscss最后 html <!-- #ifdef MP-WEIXIN || APP-PLUS --> <view class"tc header":style"topBarHeight() 0 ? : height: topBarHeight() px;padding-top: topBarTop() px"><view class"reg180" :style"top…...

「可移动工具车」物料管理的得力助手
随着工业制造企业不断发展,仓储的运营变得越来越重要,物料高效管理也迎来了新的挑战,工厂物料管理直接影响着生产效率和成本控制,不合理的物料管理可能导致物料溢出、过度库存、损耗增加等问题,进而影响企业的整体竞争…...

授时小课堂——北斗卫星信号和GPS卫星信号谁更强?
北斗卫星信号好还是GPS信号更胜一筹呢?下面小编带大家一起来比较一下看看吧。 1. 系统覆盖范围 北斗卫星导航系统是中国自主研发的授时定位系统,其覆盖范围包括全球各个地区。但在海外地区,主要还是东南亚、南亚、中亚等地区,北斗…...
网站会遭受那些攻击,要怎么应对
随着互联网的普及和发展,很多企业或个人都建立了自己的网站,这些网站不仅可以展示企业或个人的信息,还可以提供各种服务和交流平台。但是,在运营网站的过程中,很多人都会遇到网站被流量攻击的情况,这种情况…...

后端-锁专题:synchronized(java对象结构、锁的类型、锁升级流程...)
文章目录 对象的结构以及大小内存换算java的常见数据类型以及所占字节数分析对象总共占多少字节,各项占多少字节对象头结构 锁类型锁升级流程 对象的结构以及大小内存换算 java的常见数据类型以及所占字节数 String:8字节 64位 int:4字节 …...

vscode在运行c语言时,无法scanf输入
问题: 在学习c语言中,我在使用scanf和cin时无法在终端进行输入(运行了但是无法输入),在网上寻找答案,并写下笔记 解决方法 选择左上角 文件->首选项(preferences)->设置(settings…...
ROLLUP 的几点说明(十七)
ROLLUP 最根本的作用是提高某些查询的查询效率(无论是通过聚合来减少数据量,还是修改列顺序以匹配前缀索引)。因此 ROLLUP 的含义已经超出了“上卷”的范围。这也是为什么在源代码中,将其命名为 Materialized Index(物…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...