javaweb_05:请求响应——请求

什么是请求响应:

  • 请求:获取请求数据
  • 响应:设置相应数据
  • 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 "多个参数发送成功";
    }
  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值