본 포스팅은 스프링 스터디에서 진행하는 내용을 학습하며 정리한 것입니다.
잘못된 부분이 있거나 보충이 필요한 부분이 있다면 많은 조언 부탁드립니다 : )
Controller에서 클라이언트 요청에 매핑하는 4가지 방법에 대해서 알아보자.
1. 요청 경로 매핑
@RequsetMapping 어노테이션은 클라이언트의 URL 요청을 매핑하기 위해 사용한다.
- value 속성 : 경로 설정
- method 속성 : 메서드에서 처리할 HTTP의 전송방식 설정
Controller | Request Path / Method | Views | |
HomeController | / | Get | /views/home.jsp |
@Controller
public class HomeController {
@RequestMapping(value = "/",
method = RequestMethod.GET)
public String home() {
...
}
}
2. 클래스 레벨 매핑
클래스와 메서드에 @RequsetMapping 어노테이션을 사용하여 클래스에 적용된 값과 메서드에 적용된 값을 합쳐 매핑될 경로를 설정한다.
Controller | Request Path / Method | Views | |
BoardController /board |
/ | Get | /views/home.jsp |
@Controller
@ReqeustMapping(value = "/board")
public class BoardController {
@RequestMapping(value = "/list",
method = RequestMethod.GET)
public String list() {
...
}
}
3. 경로 패턴 매핑
@PathVariable 어노테이션을 이용하여 @RequestMapping 어노테이션 경로에 변수의 값을 파라미터로 전달받아 경로 패턴을 매핑하는 방법이다.
- 경로 변수는 한 개 이상 사용 가능하다.
- 파라미터 타입으로 변활할 수 없을 경우, 400 에러코드를 전송한다.
@Controller
@ReqeustMapping(value = "/board")
public class BoardController {
@RequestMapping(value = "/read/{boardNo}",
method = RequestMethod.GET)
public String read(@PathVariable int boardNo) {
...
}
}
4. Http 메서드 매핑
@RequestMapping의 method 속성에서 전송방식을 설정하여 동일한 경로값에 다른 HTTP 전송방식을 매핑하는 방법이다.
@Controller
@ReqeustMapping(value = "/board")
public class BoardController {
@RequestMapping(value = "/read/{boardNo}",
method = RequestMethod.GET)
public String register() {
...
}
@RequestMapping(value = "/read/{boardNo}",
method = RequestMethod.POST)
public String register() {
...
}
}
마무리
SpirngMVC Controller에서 어노테이션을 활용해 매핑하여 View 반환하는 경로를 매핑하는 방법은 아주 다양한다.
클라이언트가 URL로 보낸 요청을 처리할 때 경로 매핑을 잘못한 경우가 종종 있었다.
매핑 방법에 대해서 하나씩 살펴보니 다음에는 실수를 줄일 수 있을거 같다.
다음 시간에도 다양한 요청결로를 매핑하는 방법에 대해서 포스팅해야겟다.
'Spring boot' 카테고리의 다른 글
[Spring Boot] JPA 조회 작업 findById(), getOne()의 차이 (0) | 2022.03.29 |
---|---|
[Spring Boot] JPA Caching 적용하기 (0) | 2022.03.21 |
[Spring Boot] PasswordEncoder.mathes() 암호화된 패스워드 비교 (0) | 2022.03.21 |
[Spring Study Group] Spring Legacy Project 생성하기 - IntelliJ IDEA (2) | 2021.11.07 |
@Controller, @RestController 어노테이션 차이 (2) | 2021.10.15 |