본문 바로가기

STUDY/스프링 철저 입문

3-2) 스프링 MVC 핸들러(Handler): @ReqeustMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @RequestParam

 - 스프링 MVC 핸들러

 

MVC의 Controller 안에서 실제 요청을 처리하는 메소드를 핸들러(Handler)라고 한다. 사용자로부터 서버로 요청이 가면, 해당 요청에 맞는 컨트롤러의 핸들러로 요청 정보가 전해지고, 핸들러는 이를 처리하여 적절한 값을 반환 한다. 그리고 요청과 핸들러를 연결하는 것을 핸들러 맵핑(Handller Mapping)이라고 하고, @RequestMapping 어노테이션을 사용하여 맵핑이 이루어진다.

 

 - 요청 맵핑: @RequestMapping

 

Http Request, 즉 서버로의 요청 정보는 다음과 같은 구조로 되어있다.

출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

 먼저 요청하는 첫번쨰 줄(start-line)에 메소드와 URL 요청경로가 나오고, 그 다음 헤더(http headers)에 요청자의 정보와 주고받을 데이터 양식에 대한 정보가 들어있다. 이후 필요한 경우, 본문(body)부분에 추가적인 데이터가 들어갈 수 있다. 첫번째 줄의 메소드&경로와 헤더부분의 정보들을 보고, 핸들러 맵핑을 할 수 있다.

 

 

@RequestMapping(method = RequestMethod.GET, path = "/myhandler")
public Object myhandler() {
    ...
}

 위의 코드는 GET 메소드, /myhandler로 오는 요청을 myhandler() 메소드에 맵핑시킨 것이다. 이처럼 @ReqeustMapping을 사용하여 요청과 핸들러를 맵핑한다. 

 

 

속성명

설명

path

요청 경로를 지정한다.

method

요청 메소드(GET,POST,PUT,DELETE…)지정한다.

params

요청 파라미터(유무 또는 값)을 지정한다.

headers

요청 헤더(유무 또는 값)를 지정한다.

consumes

요청 헤더의 Content-Type 값를 지정한다.

produces

요청 헤더의 Accept 값을 지정한다.

 @RequestMapping에서 사용할 수 있는 속성은 위와 같이 있다. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping을 사용하면 method 속성을 생략할 수 있다.

 

 

 - 핸들러 메소드 매개변수

 

핸들러 메소드에서는 사용자의 요청정보를 다양한 매개변수로 받을 수 있다. 예를들어 쿼리 파라미터로 온 정보가 있다면, @RequestParam을 사용하여 해당 데이터를 매개변수로 받는다.

@RequestMapping(method = RequestMethod.GET, path = "/myhandler")
public Object myhandler(@RequestParam("age") Integer age) {
    ...
}

"/myhandler?age=28"와 같은 요청이 온다면, @RequestParam을 사용하여 age 매개변수에는 28이라는 값이 들어간다. 이외에도 핸들러에서 사용할 수 있는 매개변수는 다양하게 존재한다.

 

 

타입

설명

HttpEntity<?>

Http 요청,응답 정보를 가지고 있는 객체

java.util.Locale

사용자의 국가, 언어 정보

java.util.TimeZone

사용자의 시간대 정보

java.security.Principal

사용자의 인증 정보

 위와같은 타입의 매개변수를 정의하면 설명과 같은 정보를 받을 수 있다. 이 외에도 스프링 MVC에서 지원하는 타입은 더 존재한다. 

 

 

어노테이션

설명

@PathVariable

URL 경로 변수 값

@RequestParam

쿼리 파라미터 변수 값

@RequestHeader

헤더 속성 값

@RequestBody

요청 본문 값. 자동 타입 변환을 지원한다.

@CookieValue

사용자 쿠키 값

위와같은 어노테이션의 매개변수를 정의하면 설명과 같은 정보를 받을 수 있다. 이 외에도 스프링 MVC에서 지원하는 어노테이션은 더 존재한다. 

 

 

 - 핸들러 메소드 반환값

 

핸들러는 요청을 모두 처리하고, 사용자에게 응답을 보내줘야한다. 핸들러에는 이에 맞는 여러 반환값을 지정할 수 있는데, 일반적으로 사용자에게 보여줄 뷰의 이름을 반환한다.

@RequestMapping(method = RequestMethod.GET, path = "/myhandler")
public String myhandler(@RequestParam("age") Integer age) {
    ...
    return 'myview';
}

 위와 같이, String타입으로 값을 반환하면 스프링 MVC가 이에 맞는 뷰 파일을 찾아서 사용자에게 전달해준다.

 

 

타입

설명

java.lang.String

이름을 반환한다.

ResponseEntity<?>

응답 해더와 본문 객채를 반환한다.

HttpHeaders

응답 해더만 반환한다.

 위와같은 타입의 반환값를 정의하면 설명과 같은 내용을 사용자에게 전달 할 수 있다.

728x90