第三次课后作业

一、SpringBoot 入门程序编写及启动

成功启动:

代码:

二、简单参数的接收

#在postman中可以选择POST和GET两种请求方式,后面写上请求地址,GET请求中是在Params中写请求参数,POST是在请求体Body的x-www-form-urlencoded中写请求参数。

#原始方法接收请求参数

1.Controller方法形参中声明HttpServletRequest对象

2.使用getParameter调用对象

package com.wust.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){
        // 获取请求参数
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");

        int age = Integer.parseInt(ageStr);
        System.out.println(name+":"+age);
        return "OK";
    }
}

#springboot方法接收简单参数

1.需要保证请求参数名和controller形参名保持一致;

2.注解@RequestParam  在形参名称和请求参数名称不匹配时也可以完成映射,其默认属性required为true,请求参数必须传递,否则将报错;

package com.wust.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class RequestController {

    // springboot方法
    @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam(name = "name")String username, Integer age){
        System.out.println(username+":"+age);
        return "OK";
    }
}

三、实体参数的请求接收
  • 简单实体封装,请求参数名与形参对象的属性名相同
  • 运行结果及代码
package com.wust.controller;

import com.wust.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController

public class RequestController {

    //2.实体参数

    @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user);
        return "OK OK";
    }
}

  • 复杂实体封装

四、数组集合参数
  1. 数组:请求参数名与形参中的数组变量名相同,可直接使用数组封装
  2. 集合:请求参数名与形参中的数组变量名相同,通过@RequestParam绑定参数关系

五、日期时间参数
  1. 使用@DateTimeFormat注解完成日期参数格式转换

六、json参数
  1. json数据键名与形式对象属性名相同,需使用@RequestBoody标识

七、路径参数
  1. 通过URL直接传递参数,使用{。。}来标识该路径参数,使用@PathVariable获取参数路径

八、请求响应
package com.wust.controller;

import com.wust.pojo.Address;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class ResponseController {
    // 这里要注意前面已经用过hello的路径,不能再次使用,否则会报错,要与前面的有区别
    @RequestMapping("/Hello")
    public String hello(){
        System.out.println("Hello World!");
        return "用户客户端显示 Hello World!";
    }

    @RequestMapping("/getAddr")
    public Address getAddr(){
        Address address = new Address();
        address.setProvince("湖北");
        address.setCity("武汉");
        return address;
    }

    @RequestMapping("/listAddress")
    public List<Address> listAddress(){
        List<Address> list = new ArrayList<>();

        Address address1 = new Address();
        address1.setProvince("湖北");
        address1.setCity("武汉");

        Address address2 = new Address();
        address2.setProvince("湖北");
        address2.setCity("十堰");

        list.add(address1);
        list.add(address2);
        return list;

    }
}

  • 使用Result的统一响应结果

Result类和Controlller代码

package com.wust.pojo;

public class Result {
    private Integer code; //1表示成功,0表示失败
    private String mag; // 提示信息
    private Object data; // 数据data

    public Result(Integer code, String mag, Object data){
        this.code=code;
        this.mag=mag;
        this.data=data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMag() {
        return mag;
    }

    public void setMag(String mag) {
        this.mag = mag;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    public static Result success(){
        return new Result(1,"success",null);
    }
    public static Result error(String mag){
        return new Result(0,"mag",null);
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", mag='" + mag + '\'' +
                ", data=" + data +
                '}';
    }
}
@RequestMapping("/Hello")
    public Result hello(){
        System.out.println("Hello World!");
//        return new Result(1,"success","Hello World!") ;
        return Result.success("Hello World!!!");
    }

    @RequestMapping("/getAddr")
    public Result getAddr(){
        Address address = new Address();
        address.setProvince("湖北");
        address.setCity("武汉");
        return Result.success(address);
    }

    @RequestMapping("/listAddress")
    public Result listAddress(){
        List<Address> list = new ArrayList<>();

        Address address1 = new Address();
        address1.setProvince("湖北");
        address1.setCity("武汉");

        Address address2 = new Address();
        address2.setProvince("湖北");
        address2.setCity("十堰");

        list.add(address1);
        list.add(address2);
        return Result.success(list);

    }
}

九、请求响应的案例

十、由前端页面向后端发送数据

前端页面成功发送请求

后端显示前端输入信息

表单前端发送请求后端显示

  • 在浏览器打开前端html文件,在前端中填写相关信息并提交,form表单提交后跳转到@RequeatMapping指定的页面,并在后端接收到相应的信息在控制台输出,跳转的页面的名称需要与form表单中action属性值保持一致,后端的形参名称也要和前端中保持一致。
package com.wust.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
@RestController
public class MyTestController {
    @RequestMapping("myTest")
    public String myTest(String name,String sex,String emil,String [] hobby) {
        System.out.println(name+"\n"+sex+"\n"+emil+"\n"+ Arrays.toString(hobby));
        return "OK";
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值