当前位置:网站首页>第1章 开发第一个restful应用
第1章 开发第一个restful应用
2022-07-26 22:36:00 【沉睡羊sleepysheep】
1-1 Restful开发风格
基于传统mvc开发有三个重要的组件

作为jsp渲染输出的肯定是html,那也就意味着在这种模式下客户端必然是支持html的浏览器,目前互联网的发展呈多元化的趋势,除了像ie这种bs结构下的传统客户端还有诸如像微信小程序,app或者其他各种各样的应用客户端,这种客户端是不支持html的,我们希望app也好,小程序也罢都能和后端通过html进行通信该怎么办呢?这是全新的开发风格就诞生了就是本节介绍的restful开发风格
分成了两个含义



通过一张图了解一下

服务器端只返回数据,数据以json或者xml的方式进行体现,同时返回的数据不包含任何与展现相关的内容,将数据送回客户端后,再由客户端进行渲染和展现,如何展现就是客户端的事情了。最大的好处就是开发服务器数据的后端工程师只需要专注于数据不用专注于展现,前端只要拿到字符串进行解析就可以了,前后端可以同步进行。
具体要求

最常用的发送方式有4种,但是后两者我们几乎没有见过,因为在web环境下只支持get和post,在浏览器写代码是看不到这两种请求的,rest在进行语义规范定义的时候这些分别对应了查询操作新增操作更新操作以及删除操作,也就是说同一个url再向服务器发起请求的时候,使用了不同的请求方式,那他在服务器端进行的处理是不一样的,遵循restful开发风格,看到请求类型就知道是要做增删改查的哪一种了

日常开发中推荐优先返回json数据,因为无论是从可读性还是解析的角度都要比xml来的简单的多,并且json天然的被JavaScript支持不用引入组件。
命名要求


1-2 选择练习



1-3 开发第一个RestFul应用

创建工程



修改成标准web工程
![]()
![]()
![]()


![]()

配置tomcat


![]()

引入依赖

配置web.xml

过滤器

创建applicationContext.xml

把声明和schema拿过来

采用注解开发扫描包
![]()
开启springmvc的注解模式

将静态资源排除在外
![]()
创建控制器包

创建控制器类

增加请求的映射地址
![]()
增加方法

![]()
运行
对原有的artifacts进行编辑


发布jar包

启动

如果希望这个数据被成功的展示还需要客户端的支持
2-1 实现RESTful实验室

卡发客户端与restful进行交互
复制jquery包

创建html页面


书写页面就绪函数


这就是一个标准的ajax调用
执行
![]()

为什么出现乱码?


修改服务端字符集


![]()
本质上小程序也好app也罢都是向服务器发送http请求,只不过小程序和app有自己的函数发送请求而不是使用ajax
书写一下其他请求方法






作为当前程序来说并不完美,返回值是拼接字符串,如果是一个大的集合拼接工作就很复杂,如何优化是接下来要解决的问题,还有就是每个方法上都写了@ResponseBody,如何不写,restful中允许出现id这样的数据
![]()
这样的id值 是最重要的数据,如何获取?
2-2 RestController注解与路径变量
![]()
默认当前方法返回的都是rest形式的数据,而不是页面的跳转,默认将字符串想请求中进行输出
路径变量

服务端怎么接收到这个100呢?并不是请求的参数 ,而是uri中的一部分
![]()
根据格式就能自动地获取到数值,在程序中如何接收呢?

![]()

运行

2-3 选择练习




2-4 简单请求与非简单请求



在简单请求和非简单请求后 附加查询字符串


作为springmvc在接收数据的时候会有哪些不同呢?

创建person类

在参数中增加person![]()
![]()
如果以为在put请求中也可以按这样的书写格式接收数据的话,就大错特错了

post

put


最早的springmvc是为网页服务的,默认网页在表单提交的时候只支持get和post两种请求,对于put和delete这两种请求是不支持的,但是随着技术的演进put和delete作为springmvc时必须要考虑的,但又不能把put和delete的处理方式强塞进原有的代码中,所以springmvc做了一个折中的方案作为put和delete这两种非简单请求springmvc提供了一个额外的表单内容过滤器来对put和delete做额外处理,具体写法是

这样就可以完美支持获取了


2-6 json序列化
json选择2.9版本以后的,否则有漏洞

数据绑定

引入json注解

如何使用?

这里为什么返回的是一个实体对象而不是String,在springmvc中如果当前返回一个实体对象的话同时上面使用了
![]()
或者增加了
![]()
这个注解那他自动的就会通过刚才配置的json对这个实体对象进行序列化输出,从而避免了我们手动拼接字符串的麻烦

发布以来

运行


查询很多个对象该如何返回呢?


如何在客户端使用并提取他?有涉及到在html中利用ajax与其交互了

运行



按照顺序进行提取


但是在事件处理上json处理的并不是特别好
额外增加生日属性
![]()

设置当前时间,额外增加

输出

这是从1970年到现在的毫秒数
利用注解解决
![]()

但是时间确有问题相差8个小时因为是伦敦时间
![]()
这样就好了
边栏推荐
- [shader realizes shine effect _shader effect Chapter 3]
- [Luogu] p2709 little B's inquiry
- The nature and proof of the center of gravity of [mathematics] tree
- 告别宽表,用 DQL 成就新一代 BI
- [Luogu] p1395 meeting
- Qunar travel massive indicator data collection and storage
- Part II - C language improvement_ 7. Structure
- Kingbasees database administrator's Guide -- 11 manage data files and temporary files
- 第3章 跨域问题
- Signal debugging document developed by car
猜你喜欢

07 design of ponding monitoring system based on 51 single chip microcomputer

Use Arthas to locate online problems

org.yaml.snakeyaml.scanner. ScannerException: mapping values are not allowed here in ‘reader‘, line

第二部分—C语言提高篇_7. 结构体

The place where the dream begins ---- first knowing C language (2)

第1章 需求分析与ssm环境准备

Product principles of non-financial decentralized application

【C语言】数组

会议OA之我的会议
![[H5 bottom scrolling paging loading]](/img/2c/fb8dd8a7d985392450ad7d3b70016c.png)
[H5 bottom scrolling paging loading]
随机推荐
实数范围内的求模(求余)运算:负数求余究竟怎么求
Practice of intelligent code reconstruction of Zhongyuan bank
华测RTK采集的GPX数据如何带属性转出kml、shp进行后续的管理和分析
MVC three-tier architecture
Download win10 system image and create virtual machine on VMware virtual machine
Application of workflow engine in vivo marketing automation | engine 03
np.transpose & np.expand_dims
DHCP, VLAN, NAT, large comprehensive experiment
04 traditional synchronized lock
Everything you should know about wearable NFT!
Use Arthas to locate online problems
Question 152: product maximum subarray
[literature reading] hat: hardware aware transformers for efficient natural language processing
公有云安全性和合规性方面的考虑事项
NFT display guide: how to display your NFT collection
Three person management of system design
Simple SQL optimization
30、 Modern storage system (management database and distributed storage system)
Vit:vision transformer super detailed with code
Add an article ----- scanf usage