SpringMVC——REST风格
1.REST风格是什么?
Restful是一种软件架构风格、设计风格,通过url路径的方式和请求方式的配合进行参数传递以及完成不同的CRUD操作,使不同的请求方式和不同的操作进行了一个匹配统一。
2.REST请求方法设定
Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:
请求方式 | 请求目的 |
---|---|
GET | 用于获取资源 |
POST | 用于新建资源 |
PUT | 用于更新资源 |
DELETE | 用于删除资源 |
例如:* /users/1 GET : 得到 id = 1 的 user* /users/1 DELETE: 删除 id = 1 的 user* /users/1 PUT: 更新 id = 1 的 user* /users POST: 新增 user
3.REST入门案例
(1)没有参数传递时
不使用Restful风格编写的controller
@RequestMapping("/save")@ResponseBodypublic String save1(){System.out.println("save running......");return "save";}
使用Restful风格编写的controller
这里直接指出了只有post的请求时才是执行保存用户的操作
@RequestMapping(value = "/users", method = RequestMethod.POST)@ResponseBodypublic String save2(){System.out.println("save running......");return "save";}
(2)有普通参数传递时
不使用Restful风格编写的controller
@RequestMapping(value = "/findById")@ResponseBodypublic String findById(Integer id){System.out.println("findById running......" + id);return "findById";}
注意此时在浏览器地址栏我们需要输入的内容是
http://localhost:8080/test/findById?id=1
使用Restful风格编写的controller
这里直接指出了只有get的请求时才是执行查找用户的操作
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)@ResponseBodypublic String findById(@PathVariable Integer id){System.out.println("findById running......" + id);return "findById";}
注意此时在浏览器地址栏我们需要输入的内容是
http://localhost:8080/test/findById/1
(3)有json格式的字符串参数传递需要封装对象时
这里我用了一个表单提交post的请求且不使用REST时
@RequestMapping(value = "/users")@ResponseBodypublic String save(User user) throws JsonProcessingException {System.out.println(user);ObjectMapper mapper = new ObjectMapper();return mapper.writeValueAsString(user);}
这里我采用的是ajax异步请求传递一个json格式的字符串,并采用POST的提交方式。
ajax的异步请求代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>Title</title><script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script><script>// 定义方法var user = {username:"zs", age:12};function fun(){$.ajax({url:"users",contentType:"application/json",type:"POST",data:JSON.stringify(user),success:function (data) {alert(data);},// 相应成功后的回调函数error:function () {alert("出错了。。。");},dataType:"text"})}</script>
</head>
<body><input type="button" οnclick="fun()" value="提交">
</body>
</html>
对应的controller如下:
@RequestMapping(value = "/users", method = RequestMethod.POST)@ResponseBodypublic String save(@RequestBody User user) throws JsonProcessingException {System.out.println(user);ObjectMapper mapper = new ObjectMapper();return mapper.writeValueAsString(user);}
4.Restful开发中的注解介绍
- 名称:@PathVariable
- 类型:形参注解
- 位置:SpringMVC控制器方法形参定义前面
- 作用:绑定路径参数与处理器方法形参间的关系,要求路径名与形参名一一对应
- 范例:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)@ResponseBodypublic String findById(@PathVariable Integer id){System.out.println("findById running......" + id);return "findById";}
- 名称:@RestController
- 类型:类注解
- 位置:基于SpringMVCESTful来发控制器类定义上方
- 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能。
- 范例:
@RestController
public class UserController{}
- 名称:@GetMapping @PostMapping @PutMapping @DeleteMapping
- 类型:方法注解
- 位置:基于SpringMVCESTful来发控制器方法定义上方
- 作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
- 属性:value(默认):请求访问路径
- 范例:
@RestController
@RequestMapping("/users")
public class UserController {@GetMapping("/{id}")public String findById(@PathVariable Integer id){System.out.println("findById running......" + id);return "findById";}
}
SpringMVC——REST风格相关推荐
- OTS构建SpringMVC REST风格的准实时系统
一.简介 利用OTS为系统提供准实时系统交易流水持久化和离线批量数据存储服务.各系统的支撑系统,所有信息都会调用该服务,访问量大,存储和访问速度要求快,故服务的构建采用REST风格(SpringMVC ...
- SpringMVC REST 风格静态资源访问配置
1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 -->& ...
- springMvc ResultFul风格 url拼接问题
最近在学习SpringMvc 然后遇到一个ResultFul风格的问题 这里跟我的代码习惯有问题,我觉得应该会有人跟我一样.所以就把这个问题发出来 下面是我的目录结构,可以看到我喜欢把jsp放在web ...
- springmvc restful风格操作
ssm框架 controller: package com.sgcc.controller;import java.util.ArrayList; import java.util.List;impo ...
- springMVC rest风格
1.dispatcherServlet的配置 <!-- The front controller of this Spring Web application, responsible for ...
- restful get不传参数404_你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!
Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓 ...
- SpringMVC 表单验证
SpringMVC 表单验证 本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能. 首先看效果图 然后项目目录结构图 接下来用代码重点学习SpringMV ...
- Spring+SpringMVC+Mybatis SSM框架详解
一.JDBC编程 1.JDBC 简介 JDBC其实就是 Java 官方提供的一套规范(接口),用于帮助开发人员快速实现不同关系型数据库的连接. 程序运行的时候,数据都是在内存中的.当程序终止的时候,通 ...
- Spring ---- ssm整合
文章目录 SSM(spring+springMVC+Mybatis)整合流程简介 项目基础结构搭建 spring 整合mybatis 创建MyBatis映射文件 创建Spring配置文件.整合Myba ...
最新文章
- mysql卸载后root还在_TMD终于把MySQL卸载掉了
- leetcode 43. 字符串相乘(Multiply Strings)
- 统一配置中心的设计方案
- 多层陶瓷电容器用处_陶瓷电容器的用途有哪几种?
- Batch Normalization批量归一化
- SSH中直接运行php文件
- bash学习之环境变量
- 基于协同过滤,NMF和Baseline的推荐算法
- windows自带录屏_电脑版免费的录屏软件有哪些?
- 3150cdn打印机清零 hl_兄弟HL-3150/3140彩色打印机粉盒清零方法,我们提前了解一下...
- 未能配置 workstation server 的两种错误解决
- css设置动画匀速运动,CSS3 transition动画
- 倒计时 4天,COSCon'22 会议议程全览 精彩亮点抢鲜看!
- 全球计算机病毒损失报告,世界十大计算机病毒 CIH的危险被公认,第二经济损失26亿美元...
- 基于51单片机的体脂检测系统设计(51+oled+hx711+us100)
- 单片机外部中断触发方式:电平触发和边沿触发两者说明
- 基于脱敏数据,使用huggingface的Transformers预训练模型
- 2021旗舰机选购指南
- LTspice使用教程笔记
- 如何让女性乳房更具吸引力?整形医生可以用眼动追踪技术大显神通吗?
热门文章
- gene prediction commend 2
- 公众平台返回原始数据为: 错误代码-40164,错误信息-invalid ip, not in whitelist hint
- C语言strcmp函数的笔记
- 解决软件或游戏缺少api-ms-win-core-fibers-l1-1-1.dll无法启动问题
- Java小程序后台管理系统
- python 读取excel太慢_使用xlrd读取django批量excel文件太慢
- MC20 AT指令无反馈
- 解决QMYSQL driver not loaded问题
- 提升宝宝智力的方法和惩罚宝宝的科学方法
- python3 opencv3.4.5.20(高版本可行) 实现 matlab 去除小面积对象 bwareaopen函数