当前位置: 首页 > news >正文

Spring Web MVC

目录

一.简介

二.建立连接(客户端和服务器)

三.请求

1.传递单个参数

2.传递多个参数

3.对象

4.数组/集合

5.JSON

6.URL参数

7.上传文件

8.获取cookie和session

(1)获取cookie

(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 项目文件上传并访问

环境介绍 云服务器&#xff1a;京东云云服务器系统&#xff1a; CentOS 7.9JDK 版本&#xff1a;1.8Spring Boot 版本&#xff1a;2.7.17 具体步骤 步骤一 首先我们得先创建一个 Spring Boot 项目 创建如下目录结构 关于如何创建一个 Spring Boot 项目 请点击下方链接详细了解 …...

SAP实现多个统御科目:特殊总账SGL+备选统驭科目Alternative Reconciliation Accounts

以前只知道特别总账。学习了 客商的每个公司视图主数据唯一分配一个统驭科目。一般情况下&#xff0c;客商经常发生的业务对应的总帐科目设为统驭科目。 客户设置的统驭科目&#xff1a;应收账款 供应商设置的统驭科目&#xff1a;应付账款 除了经常的销售和采购业务对应应收和…...

【数据分享】2023年我国省市县三级的瞪羚企业数量(免费获取/Excel/Shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。 之前我们给大家分享了…...

用于计算机屏幕安全摄像头系统:Screen Anytime Crack

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

Redis深入理解-Socket连接建立流程以及文件事件处理机制

Redis Server 运行原理图 Redis 服务器中 Socket 网络建立以及文件事件模型 一个 redis 单机&#xff0c;可以抗几百上千的并发&#xff0c;这里的并发指的就是同时可以有几百个 client 对这个 redis server 发起请求&#xff0c;都需要去建立网络连接&#xff0c;同时间可能会…...

Docker run 命令

docker run &#xff1a;创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明&#xff1a; -a stdin&#xff1a;指定标准输入输出内容类型&#xff0c;可选STDIN/STDOUT/STDERR三项&#xff1b; -d&#xff1a;后台运行容器&am…...

Vue中的$nextTick的作用

在 Vue 中&#xff0c;当某些数据发生变化时&#xff0c;DOM 并不会立即更新。相反&#xff0c;Vue 会在下一个事件循环周期&#xff08;microtask&#xff09;中异步执行更新&#xff0c;这样可以避免频繁的 DOM 操作。然而&#xff0c;有时候我们需要在 DOM 更新后执行一些操…...

浅谈Linux bash脚本----getopts获取脚本POSIX标准传参

getopts是一个在 Shell 脚本中用于解析命令行选项的内置命令。 它用于处理脚本的参数&#xff0c;使得脚本可以接受不同的选项和参数&#xff0c;并根据用户提供的输入采取相应的操作。 getopts 命令基于 POSIX 标准&#xff0c;并且通常与 while 循环结合使用。它的语法如下…...

PyCharm玩转ESP32

想必玩ESP32的童鞋都知道Thonny&#xff0c;当然学Python的童鞋用的更多的可能是PyCharm和VsCode Thonny和PyCharm的对比 对于PyCharm和VsCode今天不做比较&#xff0c;今天重点说一下用PyCharm玩转ESP32&#xff0c;在这之前我们先对比下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…...

「可移动工具车」物料管理的得力助手

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

授时小课堂——北斗卫星信号和GPS卫星信号谁更强?

北斗卫星信号好还是GPS信号更胜一筹呢&#xff1f;下面小编带大家一起来比较一下看看吧。 1. 系统覆盖范围 北斗卫星导航系统是中国自主研发的授时定位系统&#xff0c;其覆盖范围包括全球各个地区。但在海外地区&#xff0c;主要还是东南亚、南亚、中亚等地区&#xff0c;北斗…...

网站会遭受那些攻击,要怎么应对

随着互联网的普及和发展&#xff0c;很多企业或个人都建立了自己的网站&#xff0c;这些网站不仅可以展示企业或个人的信息&#xff0c;还可以提供各种服务和交流平台。但是&#xff0c;在运营网站的过程中&#xff0c;很多人都会遇到网站被流量攻击的情况&#xff0c;这种情况…...

后端-锁专题:synchronized(java对象结构、锁的类型、锁升级流程...)

文章目录 对象的结构以及大小内存换算java的常见数据类型以及所占字节数分析对象总共占多少字节&#xff0c;各项占多少字节对象头结构 锁类型锁升级流程 对象的结构以及大小内存换算 java的常见数据类型以及所占字节数 String&#xff1a;8字节 64位 int&#xff1a;4字节 …...

vscode在运行c语言时,无法scanf输入

问题&#xff1a; 在学习c语言中&#xff0c;我在使用scanf和cin时无法在终端进行输入(运行了但是无法输入)&#xff0c;在网上寻找答案&#xff0c;并写下笔记 解决方法 选择左上角 文件->首选项&#xff08;preferences&#xff09;->设置&#xff08;settings&#xf…...

ROLLUP 的几点说明(十七)

ROLLUP 最根本的作用是提高某些查询的查询效率&#xff08;无论是通过聚合来减少数据量&#xff0c;还是修改列顺序以匹配前缀索引&#xff09;。因此 ROLLUP 的含义已经超出了“上卷”的范围。这也是为什么在源代码中&#xff0c;将其命名为 Materialized Index&#xff08;物…...

FLUX.1-Krea-Extracted-LoRA实战教程:从镜像部署到生成下载的端到端流程

FLUX.1-Krea-Extracted-LoRA实战教程&#xff1a;从镜像部署到生成下载的端到端流程 1. 模型介绍与核心价值 FLUX.1-Krea-Extracted-LoRA 是一款专注于真实感图像生成的AI模型&#xff0c;基于FLUX.1-dev基础模型开发。这个模型通过特殊的LoRA&#xff08;低秩适应&#xff0…...

如何用MAA助手彻底解放双手:明日方舟智能辅助的完整指南

如何用MAA助手彻底解放双手&#xff1a;明日方舟智能辅助的完整指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://g…...

从NetBIOS到SMB:聊聊Windows 139/445端口那些“古早”但致命的漏洞,以及2024年我们该怎么防

从NetBIOS到SMB&#xff1a;Windows网络协议漏洞的演进与当代防御策略 在数字化浪潮席卷全球的今天&#xff0c;网络安全已成为企业生存的命脉。当我们回顾Windows操作系统的发展历程&#xff0c;NetBIOS和SMB这两个"元老级"网络协议的设计缺陷&#xff0c;至今仍在全…...

传统机器学习在LLM时代的核心优势与应用场景

1. 传统机器学习在LLM时代的不可替代性当ChatGPT等大语言模型&#xff08;LLMs&#xff09;成为科技头条的常客时&#xff0c;许多从业者开始质疑&#xff1a;传统机器学习方法是否已经过时&#xff1f;作为一个在数据科学领域深耕十年的实践者&#xff0c;我可以明确告诉大家—…...

别再当‘炼丹师’了!用Alibi Explain给你的机器学习模型做个‘X光’检查(Python实战)

告别"黑箱焦虑"&#xff1a;用Alibi Explain为机器学习模型构建透明诊断系统&#xff08;Python实战&#xff09; 当你在医院做CT检查时&#xff0c;医生能够清晰指出病灶位置&#xff1b;但当你的机器学习模型做出错误预测时&#xff0c;你是否只能对着"黑箱&q…...

从Civitai与HuggingFace看AIGC模型生态:技术普惠、内容边界与本土化挑战

1. AIGC模型生态的双子星&#xff1a;Civitai与HuggingFace的技术基因 第一次打开HuggingFace的网站时&#xff0c;我差点以为误入了某个极客论坛——满屏的英文术语、密密麻麻的模型参数、几乎没有一张示例图片。但当我下载第一个Stable Diffusion模型时&#xff0c;2GB的文件…...

【第2篇】Cherry Studio 接入全模型指南:5分钟让你的电脑接上最强AI大脑

系列导航:第1篇讲了 API Key 是什么,如果你还没看,先去翻一遍。这一篇全程实操,带你把 Cherry Studio 跑起来。 一、Cherry Studio 是什么? 简单说:Cherry Studio 就是那个帮你统一管理多个 AI 大脑的前台软件。 它长这样:左侧是模型列表,中间是聊天窗口,右侧是设置…...

DoL-Lyra整合包构建系统:一键生成50+游戏版本的终极自动化方案

DoL-Lyra整合包构建系统&#xff1a;一键生成50游戏版本的终极自动化方案 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 还在为Degrees of Lewdity游戏的各种MOD组合配置而烦恼吗&#xff1f;DoL-L…...

避坑指南:STM32F103的PWM+DMA配置,为什么你的波形出不来?

STM32F103 PWMDMA实战&#xff1a;从原理到波形输出的全流程避坑指南 第一次尝试用STM32的PWMDMA功能时&#xff0c;我盯着毫无反应的示波器屏幕整整两小时。明明代码编译通过&#xff0c;寄存器配置看起来也没问题&#xff0c;可就是没有波形输出。这种挫败感想必很多初学者都…...

玩转0.96寸OLED:用页寻址模式实现动态菜单和局部刷新(节省MCU资源必备)

0.96寸OLED页寻址模式深度优化&#xff1a;动态菜单与局部刷新实战 第一次在STM32上驱动SSD1306 OLED时&#xff0c;整屏刷新导致的闪烁和卡顿让我差点放弃这个项目。直到发现页寻址模式这个宝藏功能——它不仅能将刷新速度提升3倍以上&#xff0c;还能让8KB RAM的单片机流畅运…...