【SpringMVC】 参数传递

一.项目目录

SpringBoot项目创建之后会生成很多目录

删除不需要的这四个文件/目录

目录

二.Spring MVC 和 MVC 

Spring MVC(Spring Web MVC)

Spring Web MVC 是⼀个 Web 框架

MVC : Model View Controller

它是一种思想 , 它把一个项目分成了三个部分. 

View视图层

界面显示 , 人机交互

Controller 控制器

选择处理模型 ,选择视图

Model模型层

处理业务逻辑 , 处理数据 .

总结:

MVC是一种思想, 而Spring实现了这种思想, 称为Spring MVC.

请求会直接到Controller.

SpringBoot是创建SpringMVC项目的一种方式 .  还有其他方式.

现状:

由于现在的项目都实现了前后端分离,后端开发人员不必编写前端页面,所以也就没有了view视图层.

因此,view又有了新的解释,之前返回的是试图,现在返回的是视图所需要的数据.

三.Spring MVC

学习Spring MVC,主要学习这几个方面 . 

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

2.请求

3.响应

@RequestMapping 路由映射

1.可以修饰方法

方法名和注解value没有关系,建议一致.

浏览器127.0.0.1:8080/sayhi访问

2.也可以修饰类

访问路径:类的路径+方法路径

浏览器 127.0.0.1:8080/hello/sayhi 访问

开发中建议加上类路径 : 避免重复/方便查找代码

注意:

  • 注解里的斜杠可以写多层(第一个斜杠可以省略,但是不建议 )

  • 注解不写属性名,默认是value

  • 默认情况下 get 和 post 请求都是支持的 ; 也可以用method属性限制请求方式

参数的传递

1.传递单个参数

发送请求:

要求参数的名字一致

底层逻辑:从请求的参数中获取参数名为name的值,并给name赋值

2.传递多个参数

发送请求:


3.传递对象

开发中,接口的参数通常定义为对象

4.后端参数重命名

如果进行了重命名,必须使用重命名之后的名字name的传递传参 .

  • 使用了重命名注解之后,就是一个必传的参数,否则会报错. 但是也可以设置required为false来设置该参数为非必传.

5.传递数组

传递数组有两种方式.

  • 用同一个参数名

当请求中同一个参数有多个时,浏览器就会帮我们把这个参数封装成一个数组 .

  • 使用逗号,分割传递

6.传递集合

需要添加注解我为非必传

7.传递JSON

JavaScript Object Notation (JS对象说明) , 是一种轻量级的数据交互格式 , 本质是一个对象字符串.

@RequestBody

添加注解@RequestBody将请求中的JSON转化为Person对象

(JSON数据在body中添加)

通过Fiddler抓包,查看发送的请求的确是jason数据.

8.获取URL中的参数

@PathVariable

添加@PathVariable注解

9.上传文件

@RequestPart

 

注意:

  • 传参时参数的名字需要一致.
  • 如果使用基本数据类型,必须要传值,否则会报错.

  • 如果使用包装类,如果未传参,会使用默认值null

  • 5开头的错误通常是服务端错误    --- 查看日志

        4开头的错误通常是客户端错误

  • 状态码

http状态码   

不是后端定义的.

2xx:成功               3xx:重定向   

4xx:客户端错误    5xx服务端错误

业务状态吗

http响应成功的情况下,业务的响应分为不同的状态.

四.Cookie 和 Session

两者是会话机制.

cookie是客户端机制

问题:可以伪造

session是服务端机制

问题:分布式(部署在多个机器上)

4.1获取cookie

1.servlet方式

参数是请求里的内置对象.每个请求都有内置对象,如果需要就可以写,不需要就可以不写 .

2.注解方式 @CookieValue

4.2获取session

1.servlet原始方式

2.注解@SessionAttribute

该注解为必传参数,如果此时没有session,就会直接报错.

3.HttpSession 作为参数

红框部分等同于HttpSession session = request.getSession( false ) ;

4.3.获取header

1.servlet原始

2.注解 @RequestHeader


 

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

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

相关文章

python+pytest接口自动化:token关联登录这样做,阿里p8都直呼牛逼!!!

在PC端登录公司的后台管理系统或在手机上登录某个APP时,经常会发现登录成功后,返回参数中会包含token,它的值为一段较长的字符串,而后续去请求的请求头中都需要带上这个token作为参数,否则就提示需要先登录。 这其实就…

如何在Linux系统上检测GPU显存和使用情况?

如何在Linux系统上检测GPU显存和使用情况? 在Linux系统上,你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法: 1. 使用nvidia-smi(仅适用于NVIDIA GPU) 如果你使用的是NVIDIA的显卡&#xff0…

Claude 发布2.1 版本,重大升级更新来看看有什么新功能?

11 月 23 日消息,OpenAI 竞争对手 Anthropic 日前推出了 Claude 2.1 聊天机器人及对应同名 AI 模型Claude 2.1,本文将总结Claude 2.1的主要功能。 增强的处理能力 上下文处理量大幅提升:Claude 2.1 现在能处理高达 200K上下文标记&#xff…

2、单片机及开发板介绍

单片机介绍 单片机,英文Micro Controller Unit,简称:MCU 内部集成:CPU、RAM(随机存储器)、ROM(只读存储器)、定时器、中断系统、通讯接口等 作用:信息采集(传感器)、处理&#xff0…

uniapp 适配部分IPhone手机底部安全距离

部分 IOS 机型,比如 Iphone X 的屏幕底部有一条“小黑线”区域,uniapp 项目中我们可以使用CSS的 env(safe-area-inset-bottom) 语句来自适配 IOS 的底部安全区域高度,这个语句会返回该机型的底部安全区域高度(单位 px)…

ffmpeg播放器实战(播放器流程)

1.流程图 1.main窗口创建程序窗口 程序窗口构造函数执行下面内容 2.开启播放 3.开启解码 4.开启渲染 5.反馈给ui 本文福利, 免费领取C音视频学习资料包学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg…

Linux C++ 服务器端这条线怎么走?一年半能做出什么?

Linux C 服务器端这条线怎么走?一年半能做出什么? 既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。 最…

【深度学习】如何选择神经网络的超参数

1. 神经网络的超参数分类 神经网路中的超参数主要包括: 1. 学习率 η 2. 正则化参数 λ 3. 神经网络的层数 L 4. 每一个隐层中神经元的个数 j 5. 学习的回合数Epoch 6. 小批量数据 minibatch 的大小 7. 输出神经元的编码方式 8. 代价函数的选择 9. 权重初始化的方法 …

C语言--给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组

一.题目描述: 给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组。 比如:输入一个数组是5&#xff…

SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…

Nginx结合cpolar实现内网穿透多个Windows Web站点端口

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

[autojs]利用console实现悬浮窗日志输出

"ui"; ui.layout(<vertical><button id"autoFloatWindow" text"开启悬浮窗" textSize"15sp" /><button id"autoService" text"开启无障碍服务" textSize"15sp" /><button id"…

vue中怎么根据选择的名称 生成印章图片

项目中需要根据选择的印章名称&#xff0c;动态生成印章 &#xff0c;印章下方显示当前的日期 代码如下 <template><div><label for"name">选择名称&#xff1a;</label><select id"name" v-model"selectedName">…

技术面时,一定要掌握这3个关键点

前言 现在有这么多优秀的测试工程师&#xff0c;大家都知道技术面试是不可避免的一个环节&#xff0c;一般技术面试官都会通过自己的方式去考察你的技术功底与基础理论知识。 如果你参加过一些大厂面试&#xff0c;肯定会遇到一些这样的问题&#xff1a; 1、看你项目都用到了…

机器学习/sklearn 笔记:K-means,kmeans++,MiniBatchKMeans

1 K-means介绍 1.0 方法介绍 KMeans算法通过尝试将样本分成n个方差相等的组来聚类&#xff0c;该算法要求指定群集的数量。它适用于大量样本&#xff0c;并已在许多不同领域的广泛应用领域中使用。KMeans算法将一组样本分成不相交的簇&#xff0c;每个簇由簇中样本的平均值描…

为什么要写测试用例,测试用例写给谁看?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

mysql查询统计最近12个月的数据

项目场景&#xff1a; mysql查询统计最近12个月的数据&#xff0c;按每个月纵向展示&#xff0c;效果图 sql语句 注意&#xff1a;count( v.uuid ) 这里的是被统计那张表的id SELECT m.month,count( v.uuid ) AS total FROM (SELECT DATE_FORMAT(( CURDATE()), %Y-%m ) AS mon…

Leetcode—6.N字形变换【中等】

2023每日刷题&#xff08;三十七&#xff09; Leetcode—6.N字形变换 算法思想 参考k神的题解 实现代码 class Solution { public:string convert(string s, int numRows) {if(numRows < 2) {return s;}vector<string> rows(numRows);int flag -1;int i 0;for(…

JMeter集结点的使用场景以及如何使用?

JMeter是一个开源的负载测试工具&#xff0c;它被广泛用于测试应用程序、Web服务和网络协议等的性能。在JMeter中&#xff0c;集结点&#xff08;JMeter Cluster&#xff09;是一种分布式测试环境&#xff0c;它允许多个JMeter实例同时工作来模拟高并发负载。 使用集结点的场景…

聚水潭连接API,集成无代码开发,优化电商平台运营

聚水潭连接API&#xff0c;实现电商平台的高效运营 聚水潭作为一款SaaS ERP解决方案&#xff0c;通过其出色的产品和服务&#xff0c;迅速在市场上占据了一席之地。而其无代码开发的特点&#xff0c;为电商系统和客服系统的连接与集成提供了便利。聚水潭开放平台的优势在于&am…