SpringMvc---Controlle层接收参数接收方式




注意:这几个实例都是在@ResponseBody注解中进行的,所以返回结果一定是json之类的格式,当然,输入(接收)参数的方式与返回结果无关(使用的是springboot框架)

1. 接收 基本类型 参数



1. @RequestParam()注解接收 ?后的参数

  1. 作用:获取查询参数。即 url?name= 这种形式,@RequestParam获取请求参数的(包括post表单提交,获取的值是1:1的获取,并不能通过封装对象获取)
  2. 参数1:-----value:参数名字,即入参的请求参数名字,如value=“itemId”表示请求的参数 区中的名字为itemId的参数的值将传入
  3. 参数2:-----required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报错
  4. 参数3:-----defaultValue:设置默认值,表示如果请求中没有同名参数时,使用我们设置的这个默认值
例:

    @GetMapping("/test")
    public String a(@RequestParam("name")String name, @RequestParam("value") String value){
        System.out.println("进入测试方法1" + name + "---" + value);

        return "成功进入方法";
    }2:分页

    @GetMapping("/listPage")
    public ModelAndView infoListPage(HttpSession session, Map<String, Object> map,
                                     @RequestParam(value="pageNo", required = false, defaultValue = "0") Integer pageNo,
                                     @RequestParam(value="pageSize", required = false, defaultValue = "10") Integer pageSize){

        String contactPhone = (String) session.getAttribute("contactPhone");
        PageInfo<ActivityTeamLoginOutputDTO> activityTeamLoginOutputDTOList = iActivityTeamService.infoListPage(contactPhone, pageNo, pageSize);
        if (activityTeamLoginOutputDTOList.getSize() > 0 ){
            log.error("【没有查询到信息】");
        }else{
            log.info("【成功显示所有信息】");
        }
        map.put("activityTeamLoginOutputDTOList", activityTeamLoginOutputDTOList);
        return new ModelAndView("/ActivityTeam/listPage",map);

    }3:绑定list数组
    @ResponseBody
    @GetMapping("/listPageChildAge")
    public PageInfo<ActivityTeamLoginOutputDTO> infoListPageByChildAge(HttpSession session,
                                               @RequestParam(value="childAgeList[]", required=false, defaultValue = "\"1\",\"18\",\"19\"") List<String> childAgeList){
                                               相当于 list中有三个参数 1,18,19
      ......   
	 }

在这里插入图片描述

细节

  1. 传入的参数是一个的时候,不使用注解也能接收到值(建议写上去规范点),传输两个参数一定要使用注解(前提要同名参数);
  2. 传入json格式的时候,我们使用这种方法是获取不了的,但是如果提交过来的是表单(post)而我们这个注解是获取不了其值的,得使用@RequestBody注解;
  3. 因为一般现在都是符合RESTful编程规范的接口,所以这种接收参数的注解用的较少,因为有默认值的设定,所以可能分页的时候传入值使用的较多;

总结

  1. 该注解用得少,仅在分页的时候使用,接收的参数都是 ? 后面的参数(也只能是?后面的参数,比如get提交都是问号后面的参数)







2. @PathVariable()注解接收 ‘/’ 后参数

  1. 作用:获取路径参数。即 url/{id} 这种形式。@PathVariable是获取url上数据的。一般在使用RESTful的时候使用
    这里value中的 “{id}”与形参Integer中的id名称要一直,不然就需要用@PathVariable(value=“id”)来修改形参的名称(这个路径的{id}值是形参传过来的)
    @GetMapping("/test3/{index}")
        public String c(@PathVariable("index")String index) {
        System.out.println(index);
        return "123";
    }

在这里插入图片描述




2. 接收 对象 类型参数

1. 什么都不加接收参数(注意这里的请求方法仍为 ? 后面的参数,且无法解析json格式)

注意:什么都不加可以接收对象和单个参数,但是一旦传入的值有多个时,就应该要想好加注解了

实例
    @GetMapping("/test2")
    public OrganizationLoginInputform b(OrganizationLoginInputform organizationLoginInputform){

        System.out.println("进入测试方法2" +organizationLoginInputform.getContactName() +
                "--" + organizationLoginInputform.getContactPhone());

        organizationLoginInputform.setContactName("李四").setContactPhone("120");

        return organizationLoginInputform;
    }

在这里插入图片描述
在这里插入图片描述



2. @RequestBody注解接收 json/xml类型的参数(重点)

  1. 作用: 解析前端提交的json字符串
  2. 补充:@ResponseBody把我们返回的数据解析为json字符串(springboot默认使用jackson进行解析)(只要加了这个注解,我们的返回值就是json类型或者是XML的返回值了,返回对象就是json格式,返回String就是xml格式)
  3. 释:当我们前端提交的是json格式的数据的时候,我们就需要使用这个注解来进行解析(而使用json进行提交数据的方法是非常推荐使用的)
  4. 注意:当我们接收的参数有多个时(一个json数据和其他类型的数据如像 ‘/’ 后面的值的这种),我们应该使用注解来进行绑定参数
实例

    @GetMapping("/test2")
    public OrganizationLoginInputform b(@RequestBody OrganizationLoginInputform organizationLoginInputform){

        System.out.println("进入测试方法2" +organizationLoginInputform.getContactName() +
                "--" + organizationLoginInputform.getContactPhone());

        organizationLoginInputform.setContactName("李四").setContactPhone("120");

        return organizationLoginInputform;
    }
    

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36354011/article/details/88359969
今日推荐