Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Kim Hyeong

@RequestMapping 본문

카테고리 없음

@RequestMapping

김형완 2018. 8. 22. 09:19

관련 문서


URL을 컨트롤러의 메서드와 매핑할 때 사용하는 스프링 프레임워크의 어노테이션이다.

클래스나 메서드 선언부에 @RequestMapping과 함께 URL을 명시하여 사용한다. URL외에도 HTTP 요청 메서드나 헤더값에 따라 매핑되도록 -0=옵션을 제공한다. 메서드 레벨에서 정의한 @RequestMapping은 타입 레벨에서 정의된 @RequestMapping의 옵션을 상속받는다.

참고로, 메서드 내에서 viewName을 별도로 설정하지 않으면 @RequestMapping의 path로 설정한 URL이 그대로 viewName으로 설정된다.

options

path(혹은 value)

요청된 URL에 따라 매핑한다.

path = "some-url.action"

path = { "some-url1, some-url2" }

매핑할 URL은 하나 이상 지정할 수 있다.

@RequestMapping(path = { "/addMovie.do""/updateMovie.do" }) 
public String myMethod() {
    // "/addMovie.do", "/updateMovie.do" 두 URL 모두 처리한다.
}
cs

디폴트 속성이기 때문에 속성명을 생략하고 @RequestMapping("/addMovie.do")와 같은 방식으로 사용할 수 있다.

method

GET, POST, PUT, DELETE같은 HTTP Request method에 따라 매핑을 결정한다. 값은 enum 타입인 RequestMethod다.

@RequestMapping(method = RequestMethod.POST)
public String myMethod() {
    // ...
}
cs

params

요청된 파라미터에 따라 매핑한다.

params = { "someParam1=someValue", "someParam2" }

params = "!someExcludeParam"

아래처럼 설정하면 요청 파라미터에 param1과 param2 파라미터가 존재해야하고 param1의 값은 'a'이어야하며, myParam이라는 파라미터는 존재하지 않아야한다.

@RequestMapping(params = {"param1=a""param2""!myParam"})
public String myMethod() {
    // ...
}
cs

headers

특정 헤더의 값에 따라 매핑한다.

headers = "someHader=someValue"'

headers = "someHader"', 'headers="!someHader"

와일드 카드 표현(*)도 지원한다. 

아래처럼 설정하면 HTTP Request에 Content-Type 헤더 값이 "text/html", "text/plain" 모두 매칭이 된다.

@RequestMapping(path = "/movie.do", headers = "content-type=text/*"
public String myMethod() {
    // ...
}
cs

produces TODO

@RequestMapping(path = "...", produces = "application/json")
@RequestBody
public HashMap<StringString> testMethod(Model model) {
    HashMap<StringString> map = new HashMap<StringString>();
    map.put("code""0");
    return map;
}
cs

example

@Controller
@RequestMapping("/test/*")
public class SampleController1 {
    @RequestMapping(method = RequestMethod.GET, path = "go")
    public returntype getMethodName() {
        // ...
    }
 
    @RequestMapping(method = RequestMethod.POST, path = "go2")
    public returntype getMethodName2() {
        // ...
    }
}
 
@Controller
@RequestMapping("/main.action")
public class SampleController2 {
    @RequestMapping(method=RequestMethod.GET)
    public String method() {
        return ".mainLayout";
    }
}
 
@Controller
public class SampleController3 {
    @RequestMapping("/main.action")
    public returntype m01() {
        // ...
    }
}
cs



Comments