【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.hqwc.cn/news/210353.html

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

相关文章

AnalyticDB for PostgreSQL 实时数据仓库上手指南

AnalyticDB for PostgreSQL 实时数据仓库上手指南 2019-04-016601 版权 本文涉及的产品 云原生数据仓库 ADB PostgreSQL,4核16G 50GB 1个月 推荐场景: 构建的企业专属Chatbot 立即试用 简介: AnalyticDB for PostgreSQL 提供企业级数…

JS PromiseLike 的判定与使用

目录 一. $.ajax()返回值遇到的问题二. Promise A 规范三. 判断是否为PromiseLike3.1 判断ES6的new Promise()3.2 判断包含then方法的对象3.3 判断$.ajax()返回的对象 一. $.ajax()返回值遇到的问题 当我们执行如下js代码时,可以看到$.ajax()执行后,得到…

Unity收费对谁影响最大

Unity的收费政策对以下几类人群影响最大: 游戏开发商:Unity收费政策中最直接的影响对象就是游戏开发商。对于那些使用Unity引擎制作游戏的开发商来说,他们将需要考虑新的许可证费用和服务费用,这可能会对他们的盈利和发展产生影响…

【分子指纹】化学分子指纹的概念和应用

Drug Discov Today|化学分子指纹的概念和应用 2022年9月13日,哈尔滨医科大学药物基因组信息学教研室陈秀杰教授、哈尔滨医科大学生物信息科学与技术学院解洪波副教授团队在期刊Drug Discovery Today上发表论文“Concepts and applications of chemical fi…

计算机网络之运输层

一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…

GoLand 2023.2.5(GO语言集成开发工具环境)

GoLand是一款专门为Go语言开发者打造的集成开发环境(IDE)。它能够提供一系列功能,如代码自动完成、语法高亮、代码格式化、代码重构、代码调试等等,使编写代码更加高效和舒适。 GoLand的特点包括: 1. 智能代码补全&a…

Grafana如何实现折线柱状图

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

配电室智慧运维

配电室智慧运维是一种基于先进技术和智能化管理理念的配电室运维模式。依托电易云-智慧电力物联网,它结合云计算、物联网、大数据等技术,对配电室进行全方位的智能化管理和运维,旨在提高配电室的运行效率、安全性和可靠性。 配电室智慧运维的…

MDK AC5和AC6是什么?在KEIL5中添加和选择ARMCC版本

前言 看视频有UP主提到“AC5”“AC6”这样的词,一开始有些不理解,原来他说的是ARMCC版本。 keil自带的是ARMCC5,由于ARMCC5已经停止维护了,很多开发者会选择ARMCC6。 在维护公司“成年往事”项目可能就会遇到新KEIL旧版本编译器…

Dubbo引入Zookeeper等注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

文章目录 一:Dubbo注册中心引言 1:什么是Dubbo的注册中心? 2:注册中心关系图解 3:引入注册中心服务执行流程 4:Dubbo注册中心好处 5:注册中心核心作用 二:注册中心实现方案 …

【Pytorch】Visualization of Feature Maps(3)

学习参考来自: Image Style Transform–关于图像风格迁移的介绍github:https://github.com/wmn7/ML_Practice/tree/master/2019_06_03 文章目录 风格迁移 风格迁移 风格迁移出处: 《A Neural Algorithm of Artistic Style》(ar…