post json后台处理数据_SpringBoot入门建站全系列(二)Controller种类及映射处理详解...

news/2024/5/10 15:44:49/文章来源:https://blog.csdn.net/weixin_39617252/article/details/110122235

2fec2d52b81d21428c4aa16ab1095171.png

SpringBoot入门建站全系列(二)Controller种类及映射处理详解

Controller及Mapping其实不属于SpringBoot,SpringBoot只是个大杂烩的容器而已。Controller及Mapping分别在Spring的web和context包中存在着。

本文主要介绍Controller种类及映射处理详解,并针对不同的写法做出示例。

品茗IT-SpringBoot专题-同步发布

品茗IT 提供在线支持:

一键快速构建Spring项目工具

一键快速构建SpringBoot项目工具

一键快速构建SpringCloud项目工具

一站式Springboot项目生成

如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。

一、Controller种类

Controller可以简单分为RestController和Controller。RestController位于Spring的web包中,Controller还是在Spring的context包中。

1.1 Controller

控制器Controller 负责处理由DispatcherServlet 分发的请求。在这个时候,就先不考虑Model、ModelMap和ModelAndView之类的东东,大多数时候根本用不上这三个东东的,Spring提供的方法很简洁的,后面会一一讲解。

@Controller注解的类,会作为访问的路径映射处理,不加特殊处理的返回值会被作为跳转路径。

1.2 RestController

就是@Controller + @ResponseBody 注解的综合,返回值如果是实体,一般作为json数据返回,也可以定制返回值。

二、Mapping种类

RequestMapping是mapping的基本类型,另外还有GetMapping、PostMapping、PutMapping、DeleteMapping、PatchMapping。

2.1 RequestMapping

RequestMapping注解包含以下属性:

name: 别名

value/path: 请求路径

method:请求类型(get/post...)

params: 筛选参数

headers:筛选http header

consumes: 筛选content-type

produces: 返回值的content-type

2.2 GetMapping

等价于@RequestMapping(method = RequestMethod.GET),只处理http的get请求。

2.3 PostMapping

等价于@RequestMapping(method = RequestMethod.POST),只处理http的post请求。

2.4 PutMapping

等价于@RequestMapping(method = RequestMethod.PUT),只处理http的pus请求。

2.5 DeleteMapping

等价于@RequestMapping(method = RequestMethod.DELETE),只处理http的delete请求。

2.6 PatchMapping

等价于@RequestMapping(method = RequestMethod.PATCH),只处理http的patch请求。

2.7 Http不同方法的区别

幂等: 如果一个方法重复执行多次,产生的效果是一样的,那就是幂等的。幂等的意思是如果相同的操作再执行第二遍第三遍,结果还是一样。

RESTful架构应该遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。

如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。而GET、HEAD、PUT和DELETE请求都是幂等的,无论对资源操作多少次, 结果总是一样的,后面的请求并不会产生比第一次更多的影响。

RESTful其实还是http,只是定义了一种http请求的规范,我们如果按照这个规范来了,它就是RESTful,如果不按照这个规范来,就不能称之为RESTful。比如,我们在GET请求里做了新建或更新,那它就不是幂等的,事实上,我们一般只是用到了GET和POST请求,PUT、PATCH、DELETE一般都没用上,都是用GET/POST来完成这些操作了,而且没毛病,不过最好是按照RESTful的要求来写,比如elasticsearch就有一套很规范的RESTful Api。

RESTful风格主要用到以下几种:

GET: 获取数据。

POST: POST方法不是幂等的,多次执行,将导致多条相同的条目被创建。

PUT: PUT方法一般会用来更新一个已知资源,幂等。

PATCH:是对PUT方法的补充,用来对已知资源进行局部更新,PATCH是幂等的。

DELETE: 删除操作。

三、Request参数获取方法种类

对请求的参数获取,一般有以下几种方式:

3.1 RequestBody

请求体body作为字符串进行解析,一般是是json或者xml。

3.2 RequestParam

请求参数为键值对,请求方式可以为GET请求的key=xx&value=xx形式,也可以是post的form或x-www-form-urlencoded

3.3 RequestPart

作用类似于RequestParam,但是更强大,复杂的请求,如一个formdata中,包含一个文件和一个json,这时用RequestParam只能解析出文件和一个json字符串,用RequestPart可以解析出文件和实体。

3.4 RequestHeader

可以把Request请求header部分的值绑定到方法的参数上.

3.5 CookieValue

顾名思义,获取cookie值。

3.6 PathVariable

请求路径中的某一部分。

3.7 ModelAttribute

运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中。

运用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到ModelMap中。

反正没用过。

3.8 RequestAttribute

获取Request作用域下塞入的Attribute属性。

3.9 SessionAttribute

获取Session作用域下塞入的Attribute属性。

四、示例

4.1 请求跳转

默认跳转方式就是forward。

forward和redirect的不同就是,redirect是302,地址栏会变化的,显示最新请求地址。forward不会变。

@Controller

4.2 请求json/xml,返回json/xml

根据下面的测试情况可以看出,不指定produces,默认都是返回json。不指定consumes和produces的情况下,可以根据请求数据类型做解析,默认都是返回json。

要想返回xml,或支持xml数据,需要添加依赖:

<dependency>

同名路径允许存在,但请求信息应不同,比如请求数据为json/xml的不同。

@PostMapping和@RequestMapping功能一样,但是@PostMapping只支持POST请求,@RequestMapping不指定请求类型的时候,是可以捕获所有类型的请求。

@RestController

4.3 跳转和json/xml共存

只需在需要返回json/xml的实体上加上ResponseBody即可。

@Controller

4.4 各种参数获取方式示例

@RestController

喜欢这篇文章么,喜欢就加入我们一起讨论SpringBoot技术吧!

a080ccba17e571061bd20eef89b8866e.png

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

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

相关文章

matlab保存数据到excel_使用selenium登录网站并爬取数据保存到excel

使用selenium模拟登录到网站后&#xff0c;利用requests爬取数据&#xff0c;用bs4解析数据&#xff0c;用xlwt保存到excel。自定义了2个函数&#xff1a;getData()用于获取数据&#xff0c;使用for循环获取多个页面的数据&#xff0c;解析后的数据保存到列表中&#xff1b;sav…

YDOOK :STM32 : stm官方网站 官方芯片手册下载方法

YDOOK &#xff1a;STM32 : stm官方网站 官方芯片手册下载方法 1. 登录官方网站&#xff1a; STM32 中国网&#xff1a; https://www.stmcu.com.cn/ STM32 国际网&#xff1a; https://www.st.com/content/st_com/en.html 2. 进入STM 中文网的&#xff1a; [ 设计资源 ] &…

xshell连接服务器显示乱码_wordpress零基础建站(2)-购买腾讯云服务器并登录

今天我们讲如何购买国内云服务器&#xff0c;众所周知国内云服务器的价格比较昂贵&#xff0c;正常售价1核2G1M的云服务器一年也要1000块&#xff0c;今天我建议有建站需求的小伙伴抓紧上车云服务商的双十一活动&#xff0c;88买一年1核2G1M服务器&#xff0c;288买3年1核2G1M服…

aws s3 獲取所有文件_通过亚马逊 S3 和 Cloudflare 免费托管网站

原文&#xff1a;https://chinese.freecodecamp.org/news/how-to-host-your-personal-website-for-free/在过去的五年左右时间里&#xff0c;Web 变化很大&#xff0c;曾经 dev-op 实践被奉为圭臬&#xff0c;如今却略显过时。发布网站到线上&#xff0c;过去的标准做法是给服务…

c++多久能精通_新手学习SEO一个月能学会吗?

很多刚接触学习SEO的朋友都会问&#xff1a;“新手学习SEO需要多久&#xff0c;一个月能学会SEO吗&#xff1f;“这个问题&#xff0c;首先我想在这里问的&#xff1a;”学会“是怎样的一个定义&#xff1f;如果你想学习编辑刚刚更新了一篇文章&#xff0c;发外链&#xff0c;写…

展会网站建设 服务器选择很重要,展会搭建为什么需要不断的进行比稿和选择...

就有很多的参展商都有的一个经历&#xff0c;就是如果你想进行举办一个成功的展会&#xff0c;那么一定要在初期的时候对展会搭建进行不断的比稿和选择。这是因为现在的搭建市场质量参差不齐&#xff0c;很多的搭建方存在偷工减料鱼龙混杂&#xff0c;导致整个的展会搭建非常的…

【PHP】Sublime下PHP网站开发指南

Sublime下PHP网站开发指南 作者&#xff1a;白宁超 2017年3月16日11:03:17 摘要&#xff1a;随着单位开发项目的需求&#xff0c;关于政务办公多年来一直使用php开发管理平台。笔者早年asp开发经验算是有些帮助&#xff0c;但是之前从未接触过php&#xff0c;如何快速上手还是费…

前端让网站首页加载动画在显示内容

最近遇到了一个需求就是网站在加载时先加载一个动画&#xff0c;点击动画的任意位置在出现首页内容 试了很多种方法&#xff0c;自己想了一种思路 1&#xff0c;首先把首页内容和动画内容分开&#xff0c;body先设置display:none&#xff0c;隐藏 2&#xff0c;写js这里的意思…

IIS网站部署报错解决办法

出现该种错误解决办法&#xff1a; 1. 管用员权限进入cmd命令提示符界面&#xff0c;执行命令"cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319"&#xff0c; 运行&#xff1a; aspnet_regiis.exe -i 注意&#xff1a;32位操作系统路径是C:\Windows\Microsoft.N…

简单代码实现 网站灰色蒙版

给网站加灰色蒙版 就是下面的一点点代码 -webkit-filter: grayscale(1);filter: grayscale(1);也可以这样 -webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter: grayscale(100%);filter: progid:…

iis6.0服务器同时设置多个网站,iis6.0同时运行.net2.0和net4.0的配置方法

前几天在一个IIS6.0上配置两个网站&#xff0c;本以为很简单&#xff0c;因为配置了10多年&#xff0c;非常熟悉了&#xff0c;但是当配置完毕运行后&#xff0c;却出现了从没遇到过的问题&#xff1a;两个网站不能同时运行&#xff0c;当先访问A站&#xff0c;再访问B站时就报…

解决火车头7.6版本对一些https网站的采集报错问题

针对火车头7.6爬取https网站报错System.Net.HttpWebRequest问题的处理方案 1.先看看火车头7.6爬取https网站时出现的报错情况 System.Net.HttpWebRequest 2.废话不多说&#xff0c;先看看解决方案的vb.net教程效果&#xff0c;可以看到已经没有报错了&#xff0c;而且标题也采…

vue3项目网站自适应大屏幕宽度(width>1920)

vue3项目自适应屏幕宽度 安装插件&#xff1a;lib-flexible、postcss-px2rem、px2rem-loader cnpm install lib-flexible --save cnpm install postcss-px2rem --save lib-flexible是来作为移动端适配的解决方案的&#xff0c;postcss-px2rem将代码中px自动转化成对应的rem的…

用php写的亲亲鲜花网站_用Flask写一个极简版课堂测验网站(2)

今日实现&#xff1a;学生名单导入和登录判定名单导入功能的基本实现&#xff1a;upload.html<html lang"en"><head> <meta charset"UTF-8"> <title>文件上传title>head><body><h1>导入EXCEL文件h1>&l…

网站更换国外服务器,备案被注销替换外国服务器?这样合理吗?

备案被注销替换外国服务器&#xff1f;这样合理吗&#xff1f;关于域名备案的话题最近很多网友在询问&#xff0c;针对这个话题&#xff0c;相信很多人都有自己的见解&#xff0c;今天查ICP网的编辑就针对以上问题来给大家做一个解答&#xff0c;也希望这个解答可以让很多对于域…

scrapy爬虫框架你还不会吗?简单使用爬虫框架采集网站数据

前言 本文的文字及图片过滤网络&#xff0c;可以学习&#xff0c;交流使用&#xff0c;不具有任何商业用途&#xff0c;如有问题请及时联系我们以作处理。 本篇文章就使用python爬虫框架scrapy采集网站的一些数据。 Python爬虫、数据分析、网站开发等案例教程视频免费在线观看…

Python爬取视频网站弹幕,并做成词云图

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 作者&#xff1a;张同学 来源&#xff1a;凹凸数据 Python爬虫、数据分析、网站开发等案例教程vb.net教程视频免费在线观看 https://www.xin3721.com/eschool/pythonxi…

Python爬虫入门教程15:音乐网站数据的爬取

基本开发环境&#x1f4a8; Python 3.6 Pycharm 相关模块的使用&#x1f4a8; import requests import os 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。 一、&#x1f4a5;明确需求 爬取某音乐网站的排行榜歌曲。 二、&#x1f4a5;网页数据分析 1、…

建站记录2-CSS文件未加载-已解决-Resource interpreted as Stylesheet but transferred with MIME type text/plain

在本地加载正常&#xff0c;上传到服务器之后&#xff0c;网页没有样式。 解决问题的过程&#xff1a; 是否路径问题&#xff1f; —>分析&#xff1a;应该不是路径问题。页面中引用了图片&#xff0c;路径格式与CSS文件相同&#xff0c;图片可以正确加载。 —>操作–需…

快速把网站变成纯灰度显示,filter的使用

在html标签加上 <style>html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1);-webkit-filter: grayscale(100%);} </style>filter https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter filter CSS属性将模糊或颜色偏移等图形效果应用…