Spring MVC 컨트롤러 메소드에서 GET HTTP 요청의 매개 변수 값을 어떻게 취합니까?


87

이 기간에 저는 Spring MVC 쇼케이스 예제 (STS dasboard에서 다운로드 가능)를 공부하고 있으며 Request Mapping예제 에 대한 몇 가지 간단한 질문이 있습니다.

1) 내 home.jsp페이지에는 다음 링크가 있습니다.

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

이 링크에서 볼 수 있듯이 "bar"값을 포함하는 "foo"매개 변수가있는 HTTP GET 요청을 수행하고 있습니다.

이 HTTP 요청은 컨트롤러 클래스 MappingController의 다음 메서드에 의해 처리됩니다.

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

이 메소드 GET는 "foo"라는 매개 변수가있는 HTTP 요청 (전용 유형)을 관리합니다.

이 매개 변수의 값 ( "bar")을 가져 와서 by Parameter 메서드의 코드 내부에있는 변수에 어떻게 넣을 수 있습니까?

답변:


184

설명서에 설명 된대로 @RequestParam주석 을 사용하여 :

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}

3
명확한 답변과 문서에 대한 참조에 감사드립니다
— AndreaNobili

3
10 개의 매개 변수가있는 경우이 작업을 10 번 수행해야합니까? 아니면 시나리오를위한 더 나은 방법이 있습니다
— Count

2
@Count : 문서에 제공 한 링크를 클릭 한 다음 "지원되는 메소드 인수 유형"단락까지 조금 위로 스크롤하고 "명령 또는 양식 객체"에 대한 부분을 읽어보십시오
— JB Nizet

43

URI 템플릿을 사용할 수도 있습니다. 요청을 편안한 URL로 구성했다면 Spring은 URL에서 제공된 값을 구문 분석 할 수 있습니다.

HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

제어 장치

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Spring URI 템플릿 문서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.