Spring Boot 웹 프로젝트 의 매개 변수 바 인 딩 을 자세히 설명 합 니 다.

5841 단어 springboot
1.@RequestParam
이 주 해 는 하나의 요청 데 이 터 를 연결 하 는 데 사 용 됩 니 다.url 의 매개 변수 일 수도 있 고 폼 이 제출 한 매개 변수 와 업로드 한 파일 일 수도 있 습 니 다.
세 가지 속성 이 있 습 니 다.value 는 매개 변수 이름 을 설정 하 는 데 사 용 됩 니 다.defaultValue 는 매개 변수 에 기본 값 을 설정 하 는 데 사 용 됩 니 다.required 가 true 일 때 매개 변수 가 비어 있 으 면 오류 가 발생 합 니 다.
자,구체 적 인 예 를 보 여 드 리 겠 습 니 다.
우선 vm:

<h1>param1:${param1}</h1>
<h1>param2:${param2}</h1>
좋아,두 개의 인 자 를 보 여주 기 위해 서.
첫 번 째 상황:

  @RequestMapping(value = "/hello1.htm")
  public String hello1(ModelMap modelMap,Integer param1, int param2) {
    modelMap.addAttribute("param1", param1);
    modelMap.addAttribute("param2", param2);
    return "hello";
  }
여기 앞의 매개 변 수 는 포장 형 이 고 뒤의 매개 변 수 는 원본 형식 입 니 다.
직접 url 로 요청:
http://localhost:8080/hello1.htm?param1=1¶m2=2
결과:

하지만:
param 2 를 전달 하지 않 으 면:
http://localhost:8080/hello1.htm?param1=1
바로 잘못 보 고 했 어 요.
null 을 원본 형식 으로 변환 할 수 없 기 때 문 입 니 다.
따라서 모든 매개 변 수 는 포장 유형 을 사용 하고 원본 유형 을 사용 하지 않 는 것 을 권장 합 니 다.
두 번 째 상황:
여전히 위 에 있 는 contrller 입 니 다.주 소 는 바 뀌 었 습 니 다.
http://localhost:8080/hello1.htm?param2=1¶m1=2
바로 param 2=1,param 1=2 를 시험 해 보 려 고 합 니 다.매개 변수 바 인 딩 이 순서 와 관련 이 있 는 지,아니면 매개 변수 이름 과 만 관련 이 있 는 지,결과:
따라서 spring Mvc 매개 변수 바 인 딩 은 매개 변수 이름 과 만 관계 가 있 습 니 다.
 
세 번 째 상황:
페이지 에 있 는 폼 의 매개 변수 와 코드 에 있 는 매개 변수 이름 이 다 르 면 어떻게 합 니까?이 럴 때 주석 을 사용 할 수 있 습 니 다. 

 @RequestMapping(value = "/hello1.htm")
  public String hello1(ModelMap modelMap, @RequestParam(value = "paramTest") Integer param1, Integer param2) {
    modelMap.addAttribute("param1", param1);
    modelMap.addAttribute("param2", param2);
    return "hello";
  }
param 1 앞 에 주 해 를 붙 였 습 니 다.이때 첫 번 째 인 자 는 param Test 이름 의 인자 만 받 아들 이 고 param 1 은 이 때 무효 입 니 다.
만약 이때 우리 가 이렇게 요구한다 면:
http://localhost:8080/hello1.htm?param1=1¶m2=2
spring 이 직접 잘못 보 고 했 습 니 다.이렇게 요청 해 야 합 니 다.
http://localhost:8080/hello1.htm?paramTest=1¶m2=2
결과:
 
 네 번 째 상황:
때로는 페이지 의 폼 클 라 이언 트 가 값 을 채 우지 않 지만 컨트롤 러 에 서 는 기본 값 이 있 기 를 바 랍 니 다.
이렇게 할 수 있 습 니 다.

  @RequestMapping(value = "/hello1.htm")
  public String hello1(ModelMap modelMap, @RequestParam(defaultValue = "5") Integer param1, Integer param2) {
    modelMap.addAttribute("param1", param1);
    modelMap.addAttribute("param2", param2);
    return "hello";
  }
RequestParam 의 defaultValue 속성 을 사 용 했 습 니 다.url 매개 변수 에 param 1 이 전송 되 지 않 았 다 면 오류 가 발생 하지 않 았 을 것 입 니 다.기본 값 을 사용 하 십시오.예 를 들 어 우리 가 이렇게 요청 한 것 입 니 다.
http://localhost:8080/hello1.htm?param2=2
결과:
 
그러나 url 에서 param 1 에 값 을 부여 하면:
http://localhost:8080/hello1.htm?param1=3¶m2=2
결과:
 
즉,우리 가 부여 한 값 은 기본 값 을 수정 할 것 이다.
다섯 번 째 상황:
RequestParam 속성 이 하나 더 있 습 니 다:required
반드시 값 을 전달 해 야 한 다 는 뜻 이다.그렇지 않 으 면 잘못 을 보고 하 는 것 이 바로 이렇게 제멋대로 라 는 뜻 이다.

    @RequestMapping(value = "/hello1.htm")
    public String hello1(ModelMap modelMap, @RequestParam(required = true) Integer param1, Integer param2) {
      modelMap.addAttribute("param1", param1);
      modelMap.addAttribute("param2", param2);
      return "hello";
    }
그러나 required=true,defaultValue=과 동시에 나타 날 때 required 가 효력 을 잃 고 전송 할 수 있 으 며 전송 할 수 있 습 니 다.
단순 유형 매개 변수 바 인 딩 소결:
springMVC 는 기본적으로 매개 변수 위치 가 아 닌 매개 변수 이름 에 따라 연 결 됩 니 다.
포장 유형 을 사용 하 십시오.그렇지 않 으 면 값 을 전달 하지 않 으 면 잘못 보고 할 수 있 습 니 다.
매개 변수 이름 을 바 꾸 려 면@RequestParam(value=")을 사용 하 십시오.
@RequestParam(defaultValue=")을 사용 하고,참조 하지 않 을 때 기본 값 을 사용 합 니 다
@RequestParam(required=true)을 사용 하여 인 자 를 전달 해 야 합 니 다.
 2.@PathVariable
이 설명 을 사용 하면 URL 에 있 는 자리 표시 자 파 라 메 터 를 컨트롤 러 처리 방법 에 연결 할 수 있 습 니 다.이렇게 사용 할 수 있 습 니 다.

  @RequestMapping("/hello2.htm/{param1}/{param2}")
  public String hello2(ModelMap modelMap, @PathVariable Integer param1, @PathVariable Integer param2) {
    System.out.println("   hello2   ");
    System.out.println(param1 + "," + param2);
    modelMap.addAttribute("param1", param1);
    modelMap.addAttribute("param2", param2);
    return "hello";
  }
URL:
http://localhost:8080/hello2.htm/1/2
결과:
 
PathVariable 주 해 를 추가 하지 않 으 면 연결 할 수 없습니다.

  @RequestMapping("/hello2.htm/{param1}/{param2}")
  public String hello2(ModelMap modelMap,Integer param1, @PathVariable Integer param2) {
    System.out.println("   hello2   ");
    System.out.println(param1 + "," + param2);
    modelMap.addAttribute("param1", param1);
    modelMap.addAttribute("param2", param2);
    return "hello";
  }
첫 번 째 인자 의 주 해 를 지 웠 습 니 다:
http://localhost:8080/hello2.htm/1/2
결과:
 
빈 값 을 페이지 로 전송,귀속 불가
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기