【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


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!

一、包含的软件开发工具包 HOOPS Web平台帮助开发人员构建基于Web的工程应用程序,提供高级3D Web可视化、准确快速的CAD数据访问和3D数据发布。 HOOPS Web平台包括三个集成软件开发工具包 (SDK): (1)Web端3D可视化引擎 HOOPSCom…

labview 安捷伦 34970A 采集温度等

本文详细描述了怎么用安捷伦34970A采集温度,并列出了labview的下载链接,具有一定的参考价值。 1.必要条件: RS-232电缆一根 IO Libraries Suite 软件 BenchLink Data Logger 软件 软件可以在http://www.keysight.com.cn下载 检查RS-232…

Hadoop学习总结(MapReduce的数据去重)

现在假设有两个数据文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重复数据&…

本地canal安装和使用

1、组件版本 canal.deployer-1.1.7 kafka_2.13-2.6.0 jdk8 apache-zookeeper-3.6.0-bin mysql5.7 2、解压canal.deployer-1.1.7 2.1、修改canal.properties配置文件 ##改为kafka canal.serverModekafka## 改为instance canal.destinations instance## 改为true&#x…

强化学习------贝尔曼方程

目录 前言基础知识马尔可夫决策过程 (Markov decision process, MDP)回报(Return)折扣回报(Discounted Return) State Value(状态价值函数)贝尔曼方程的推导贝尔曼方程的矩阵形式Action Value(动作价值函数)贝尔曼最优公式 前言 …

基于 Modbus 的工业数据采集、控制(part 2)

基本处理流程 服务器 parse_and_process(char * input)//input :post请求发送的正文 {...// 请求 modbus 数据else if(strstr(input, "modbus_get")){return handle_get(sock, input);}// 控制 modbus 设备else if(strstr(input, "modbus_set")){return …

【OpenAI】经营权争夺战关系图

《OpenAI新模型曝重大飞跃:AGI雏形或威胁人类,也成Altman被解雇导火索!》摘要如下: [一句话总结] OpenAI的Q*项目取得突破,解决了以前未见过的数学问题,为AI发展带来重要的技术里程碑。 [文章概览要点] OpenAI内部研…

redis运维(十四) hash缓存案例

一 缓存案例 ① 需求 ② 个人理解 策略:不更新缓存,而是删除缓存大部分观点认为:1、做缓存不应该是去更新缓存,而是应该删除缓存2、然后由下个请求去缓存,发现不存在后再读取数据库,写入redis缓存 高并发场景下,到底先更新缓存还是先更…

完美解决RuntimeError: implement_array_function method already has a docstring

文章目录 一、报错原因--numpy版本太低二、更新numpy总结 一、报错原因–numpy版本太低 当收到 "RuntimeError: implement_array_function method already has a docstring" 错误时,这可能是由于在numpy的某个版本中,该方法的文档字符串&…

vue3-生命周期

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-生命周期 目录 vue3生命周期 vue3生命周期钩子 1.1 onMounted() 1.2 onUpdated() 1.3 onU…

2024年天津专升本招生计划及其收费标准

2024年天津专升本招生计划及其收费标准 天津农学院 文史类 人力资源管理 20 4400 文史类 物流管理 20 4400 理工类 人力资源管理 10 4400 理工类 物流管理 10 4400 理工类 水文与水资源工程 30 5400 有专业限制 理工类 水产养殖学 20 4400 有专业限制 天津…

ui5使用echart

相关的代码已经发布到github上。 展示下相关的实现功能 1、柱状图-1 2、柱状图-2 3.折线图 4.饼状图 如何使用: 使用git clone项目到本地 git clone https://github.com/linhuang0405/com.joker.Zechart找到index.html。在vscode里右键选择Open with Live Serve…

我的创业之路:3个月的经历与回顾

从金山办公离职到现在已过去差不多3个月的时间,自己开发的产品也逐步稳定,是时候总结和回顾一下这三个月的心路历程了 起点 离职后,我思考过很多个创业项目,最后还是选择了做一款在线打字练习的网站。其主要原因如下&#xff1a…

杨传辉:从一体化架构,到一体化产品,为关键业务负载打造一体化数据库

在刚刚结束的年度发布会上,OceanBase正式推出一体化数据库的首个长期支持版本 4.2.1 LTS,这是面向 OLTP 核心场景的全功能里程碑版本,相比上一个 3.2.4 LTS 版本,新版本能力全面提升,适应场景更加丰富,有更…

关于APP备案的通知以及APP备案的常见问题

前言 众所周知今年8月份,工信部出台了《工业和信息化部关于开展移动互联网应用程序备案工作的通知》,APP开发者的影晌是显而易见的。开发者需要按照要求提交相关材料进行备案,这无疑增加了开发者的时间和精力成本。虽然备案制度会增加开发者…

探针台的应用领域

探针台(Probe Station)是一种用于对半导体器件进行电性能测试的重要设备。它通常由精密的机械结构、高性能的探针针头和电性能测试仪器组成。探针台可以对半导体芯片、集成电路和其他微电子器件进行直接的电性能测试,从而为研究和生产提供有价…

Docker部署Vue+Springboot项目

一、部署Springboot项目 1.1先将本地的java项目打成jar包。 再右上角进行maven操作。 1.2将jar包上传到服务器当中。 先再目录/home 下创建一个文件夹(classRoom)用于存放后端打镜像时需要的文件。 如果是服务器的话可以直接将文件拖拽到想要转移的地方…

python数据结构与算法-15_堆与堆排序

堆(heap) 前面我们讲了两种使用分治和递归解决排序问题的归并排序和快速排序,中间又穿插了一把树和二叉树, 本章我们开始介绍另一种有用的数据结构堆(heap), 以及借助堆来实现的堆排序,相比前两种排序算法要稍难实现一些。 最后我…

Unity UI设计 软件构造实验报告

实验1: 仿真系统的UI主界面设计 1.实验目的 (1)熟悉Unity中UI界面的设计与编写; (2)熟悉UI界面中场景转换,UI与场景内容相互关联的方式。 (3)熟悉Unity中MySQL数据库的操作 2.实验内容 新建…

分布式锁之基于redis实现分布式锁(二)

2. 基于redis实现分布式锁 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他…