随笔 - 19  文章 - 0  评论 - 0  阅读 - 3564

Postman+请求与响应

Postman

  1. 请求映射路径
  2. 请求参数
  3. 日期类型参数传递
  4. 响应json数据

1.请求映射路径
名称:@RequestMapping
类型:方法注解 类注解
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
范例:

@Controller
@RequestMapping("/book")
public class BookController {

    @RequestMapping("/save")
    @ResponseBody
    public String save(@RequestParam("name") String username, int age){
        System.out.println("book save "+username+" "+age);

        return "{'bookname':'llg'}";
    }
}

2.请求参数
2.1解决SpringMvc使用Post请求乱码问题

@Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter=new CharacterEncodingFilter();
        filter.setEncoding("utf-8");
        return new Filter[]{filter};
    }

Get请求:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数
Post请求:form表单post请求传参,表单参数名与形参变量名相同,定义形参即可接收参数

2.2参数种类

  1. 普通参数(Get请求,Post请求)
  2. POJO类型参数
  3. 嵌套POJO类型参数
  4. 数组类型参数
  5. 集合类型参数
    2.2.2POJO类型参数
@RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user){
        System.out.println("pojo参数传递 user ==> "+user);
        return "{'module':'pojo param'}";
    }

2.2.3嵌套POJO类型参数(POJO对象中包含POJO对象,此User非上方的User)

//嵌套POJO参数:嵌套属性按照层次结构设定名称即可完成参数传递
 @RequestMapping("/pojoContainPojoParam")
    @ResponseBody
    public String pojoContainPojoParam(User user){
        System.out.println("pojo嵌套pojo参数传递 user ==> "+user);
        return "{'module':'pojo contain pojo param'}";
    }

2.2.4数组类型参数

//数组参数:同名请求参数可以直接映射到对应名称的形参数组对象中
    @RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] likes){
        System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
        return "{'module':'array param'}";
    }

2.2.5集合类型参数

//集合参数:同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据
    @RequestMapping("/listParam")
    @ResponseBody
    public String listParam(@RequestParam List<String> likes){
        System.out.println("集合参数传递 likes ==> "+ likes);
        return "{'module':'list param'}";
    }

2.3请求参数(传递json数据)
json数组
json对象(POJO)
json数组(POJO)

  1. 添加json数据转换相关坐标

  2. 设置发送json数据(请求body中添加json数据)

  3. 开启自动转换json数据的支持(在SpringMvcConfig中添加 @EnableWebMvc)@EnableWebMvc功能之一:根据类型匹配对应的类型转换器

  4. 设置接收json数据

//集合参数:json格式
    //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
    //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
    @RequestMapping("/listParamForJson")
    @ResponseBody
    public String listParamForJson(@RequestBody List<String> likes){
        System.out.println("list common(json)参数传递 list ==> "+likes);
        return "{'module':'list common for json param'}";
    }

    //POJO参数:json格式(pojo类就是对象类)
    @RequestMapping("/pojoParamForJson")
    @ResponseBody
    public String pojoParamForJson(@RequestBody User user){
        System.out.println("pojo(json)参数传递 user ==> "+user);
        return "{'module':'pojo for json param'}";
    }

    //集合参数:json格式
    @RequestMapping("/listPojoParamForJson")
    @ResponseBody
    public String listPojoParamForJson(@RequestBody List<User> list){
        System.out.println("list pojo(json)参数传递 list ==> "+list);
        return "{'module':'list pojo for json param'}";
    }

2.4@RequestBody与@RequestParam区别
区别:

  • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
  • @RequestBody用于接收json数据【application/json】

应用:

  • 后期开发中,发送json格式数据为主,@RequestBody应用较广
  • 如果发送非json格式数据,选用@RequestParam接收请求参数

3.日期类型参数传递

//日期参数
    //使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd
    @RequestMapping("/dataParam")
    @ResponseBody
    public String dataParam(Date date,
                            @DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
                            @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
        System.out.println("参数传递 date ==> "+date);
        System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
        System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
        return "{'module':'data param'}";
    }

4.响应json数据(对象集合转json数组)

@RequestMapping("/toJsonList")
@ResponseBody
    public List<Book> getAll() {
        ArrayList<Book> bookList = new ArrayList<Book>();
        Book book1 = new Book();
        book1.setType("软件工程");
        book1.setName("SpringMVC");
        book1.setDescription("小试牛刀");
        bookList.add(book1);

        Book book2 = new Book();
        book2.setType("计算机技术");
        book2.setName("组成原理");
        book2.setDescription("408");
        bookList.add(book2);
        return bookList;
    }
posted on   云往前面飘  阅读(159)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示