지난번에 @Controller 에 대해 정리하였다.
이번엔 @Controller의 단짝과도 같은 @RequestMapping 에 대해 정리한다.
@RequestMapping 은 URL을 컨트롤러의 메소드와 매핑하는 용도로 사용한다.
즉, 사용자가 어떤 사이트로 이동하기 위해 URL을 입력하여 이동하기를 요청한다면
@Controller가 요청을 받아 URL과 맞는 @RequstMapping을 찾아 준다.
@RequestMapping은 @Controller에서 받은 요청을 받기 위해 다양한 속성을 클래스 또는 메소드 단위로
지정해 줄 수 있다.
*속성
value
|
String[]
|
요청으로 들어온 URL Path값으로 매핑
|
method
|
RequestMethod[]
|
HTTP Request 메소드 값을 매핑 조건으로 부여
GET, POST, HEAD, PUT, DELETE 등등 (ENUM으로 정의) |
params
|
String
|
HTTP Request 파라미터를 매핑 조건으로 부여
|
* value
URL 패턴을 지정한다.
문자열 배열로 구성되어 여러개의 경로를 지정할 수도 있다.
@RequestMapping(value = "/path") // 가장 일반적인 쓰임새
@RequestMapping(value = "/path/**/DetailPath") // **을 붙여주는 등 URL 패턴을 지정 가능
@RequestMapping(value = "/path1", "/path2") // String 배열로 여러 경로를 처리 가능
@RequestMapping(value = "/path/{ID}") // {}를 통해 컨트롤러에서 ID를 파라미터로 전달받음.
* method
HTTP Request 메소드를 정의한 ENUM으로 URL을 처리할 방법을 Method를 통해 각 메소드에 매핑이 된다.
즉, 동일한 URL이라도 정해준 메소드에 따라 처리할 메소드를 지정할 수 있다.
@RequestMapping(value = "/path/pathdetail", method = RequestMethod.GET)
public void method1(){}
@RequestMapping(value = "/path/pathdetail", method = RequestMethod.POST)
public void method2(){}
만약 URL이 GET방으로 지정되었다면 method1() 에서 요청이 처리되며 POST라면 method2에서 처리된다.
* params
URL에 파라미터로 값을 받는 경우 값에 따라서 매핑될 메소드를 지정할 수 있다.
@RequestMapping(value = "/path", params = "flag = true")
@RequestMapping(value = "/path", params = "flag = false")
이렇게 하면 URL에 전해준 flag 값에 따라 어떤 메소드에서 처리할지 정해줄 수 있다.
* 클래스에 붙인 @requestMapping
@RequestMappin은 클래스에도 붙여줄 수 있다.
@Controller
@RequestMapping(value = "/path") // /path/**/
public class testClass {
@RequestMapping(value = "/detailPath1") // /path/dtailPath1
public void testMethod1() {
}
@RequestMapping(value = "/detailPath2") // /path/detailPath2
public void testMethod2() {
}
}
만약 요청된 URL 경로가 /path/detailPath1 로 들어오게 된다면 /path 를 매핑해준 testClass 에 들어오고
그 뒤의 경로가 detailPath1 이므로 testMethod에서 처리할 수 있다.
즉, Class 선언에 @RequestMapping 으로 적어준 경로를 공통으로 사용하며 그 뒤의 경로는 메소드에서
처리하는 것으로 매핑할 수 있다.
@RequestMapping 은 이 외에도 상속, 제네릭 등등으로 다양하게 사용하는 방법이 있다. (참고 블로그)
핵심적인 내용은 [ @RequstMapping 은 URL 이 들어왔을때 그 경로에 따라 어떻게 처리될 것인가를 지정해주는 것이다.] 라는 것을 기억하자.
# 참고 블로그
- 기본적인 사용방법
https://woolbro.tistory.com/43
- 기본 + 상속, 제네릭 등 응용해서 사용하는 방법
@RequestMapping은 DefaultAnnotationHandlerMapping에서 컨트롤러를 선택할 때 대표적으로 사용하는 애노테이션이다. url당 하나의 컨트롤러에 매핑되던 다른 핸들러 매핑과 달리 메서드 단위까지 세분화하여 적용할 수 있으며, url 뿐 아니라 파라미터, 헤더 등 더욱 넓은 범위를 적용할 수 있다. 속성 DefaultAnno
joont92.github.io
'SPRING FRAMEWORK > ANNOTATION' 카테고리의 다른 글
Lombok 어노테이션 정리 (0) | 2022.08.29 |
---|---|
@Controller (0) | 2022.08.29 |
@Component (0) | 2022.08.29 |
@Bean (0) | 2022.08.28 |
Annotation / Meta-Data (0) | 2022.08.28 |