什么是请求响应:
- 请求:获取请求数据
- 响应:设置相应数据
- BS框架:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存在服务端。
- CS架构:Client/Server.客户端/服务器架构模式。(要下载客户端)
一、Postman
1、下载
Postman是一款功能强大的网页调试与发送页面的HTTP请求的Chrome插件,常用于接口调试。
链接:https://pan.baidu.com/s/1S8oiRrH_egjo80KCBS5IAA?pwd=yc7f
提取码:yc7f
下载完成后,直接双击安装。安装完成后的页面如下:(完成后自己注册登录)
2、使用
运行在javaweb_04中写的springboot的SpringbootApplication中的代码
在Postman中创建工作空间:
请求完成后,可以点击save保存该页面。
保存好之后,界面如下:
二、简单参数
在请求服务端时,传递的是一些普通的请求数据。
1、原始方式请求参数
在原始的web程序中,获取请求参数,需要通过HttpServletRequest
对象手动获取。
创建了一个新模块,并且写了一个新的controller函数去传递消息
新建类,并在该类类中书写代码,完成后运行该项目的启动类:
package org.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class RequestController {
//原始方式
@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
//通过request获取请求参数
String name = request.getParameter("name");
String strAge = request.getParameter("age");
int age = Integer.parseInt(strAge);
System.out.println(name + ":" +age);
return "ok";
}
}
运行起来后在postman中做测试:
2、pringboot中接受简单参数
注意请求的参数名与代码中的形参名一定保持一致就可以成功
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
package org.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class RequestController {
//原始方式
// @RequestMapping("/simpleParam")
// public String simpleParam(HttpServletRequest request){
// //通过request获取请求参数
// String name = request.getParameter("name");
// String strAge = request.getParameter("age");
// int age = Integer.parseInt(strAge);
// System.out.println(name + ":" +age);
// return "ok";
// }
@RequestMapping("/simpleParam")
public String simpleParam(String name,Integer age){
System.out.println(name + ":" +age);
return "okkkkkkk~";
}
}
运行结果:
使用Post发送请求(代码不变):
三、实体参数
1、简单实体对象
请求参数名与形参对象属性名相同(封装成功的要点)。定义POJO接收即可(将参数封装在实体对象中)
①准备一个user类去封装输出的参数
package org.example.pojo;
//实体类
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
②在requestController中定义方法去使用user:
package org.example.controller;
import org.example.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class RequestController {
//原始方式
// @RequestMapping("/simpleParam")
// public String simpleParam(HttpServletRequest request){
// //通过request获取请求参数
// String name = request.getParameter("name");
// String strAge = request.getParameter("age");
// int age = Integer.parseInt(strAge);
// System.out.println(name + ":" +age);
// return "ok";
// }
@RequestMapping("/simpleParam")
public String simpleParam(String name,Integer age){
System.out.println(name + ":" +age);
return "okkkkkkk~";
}
//2、实体参数
@RequestMapping("/simplePojo")
public String simplePojo(User user){
System.out.println(user);
return "successful";
}
}
③启动当前服务,在postman中查看
2、复杂实体对象
请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数
四、数组集合参数
在表单中有复选框,可以勾选多个值,要将多个值提交,就得使用数组集合参数。
1、数组参数
请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数。
//数组集合参数
@RequestMapping("/arrayParam")
public String arrayParam(String []hobby){
System.out.println(Arrays.toString(hobby));
return "successful";
}
运行,在postman中send之后:
2、集合参数
五、日期时间参数
使用@DataTimeFormat
注解完成日期参数格式转换
//日期时间参数
@RequestMapping("/dataParam")
public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updataTime){
System.out.println(updataTime);
return "成功发送时间";
}
六、Json参数(Post)
json数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody
标识
//json参数
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "json参数发送成功";
}
User类:
package org.example.pojo;
//实体类
public class User {
private String name;
private Integer age;
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", address=" + address +
'}';
}
}
Address类:
package org.example.pojo;
public class Address {
private String province;
private String ctiy;
@Override
public String toString() {
return "Address{" +
"province='" + province + '\'' +
", ctiy='" + ctiy + '\'' +
'}';
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCtiy() {
return ctiy;
}
public void setCtiy(String ctiy) {
this.ctiy = ctiy;
}
}
七、路径参数
1、单个参数
通过请求URL直接传递参数,使用{...}
来标识该路径参数,需要使用@PathVariable
获取路径参数(类似翻页)
//路径参数
@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
System.out.println(id);
return "发送成功";
}
2、多个参数
//路径参数
@RequestMapping("/path/{id}/{name}")
public String pathsParam(@PathVariable Integer id,@PathVariable String name){
System.out.println(id + ":" + name);
return "多个参数发送成功";
}