스프링 부트 프로젝트를 진행하던 중 URL주소에 파라미터를 넘겨야 할 경우가 생겼다.
그 방법들에 대해서 알아보겠다.
1. URL 경로 중간에 파라미터 삽입(@PathVariable)
말 그대로 URL 경로 중간에 파라미터를 삽입하는 방법이다.
변수에 따른 하위 페이지가 존재하는 경우 사용하기 용이하다.
URL 예시
이 외에 ~/user/124/watches/
, ~/user/125/watches/
등등
사용법
@GetMapping("/user/{userId}/watches/")
public String userWatchList(@PathVariable String userId, Model model){
User user = userService.findUser(userId).orElse(null);
List<Watch> watchList = userService.watchesByUser(user);
model.addAttribute("watchList", watchList);
return "watch_list.html";
}
- 컨트롤러와 매핑시킬 URL에서, 파라미터가 삽입될 부분은 { 변수명 } 을 사용하여 표시한다.
여기서 변수명은, URL을 통해 넘겨 받을 파라미터 변수를 뜻한다. - 메소드의 매개변수로 해당 파라미터 값을 받아올 변수를 추가한다. 해당 매개변수에는
@PathVariable
아노테이션을 추가한다.- 해당 매개변수를 통해, URL로 넘겨받은 값을 메소드 안에서 사용할 수 있다.
- 만약 메소드의 매개변수와 { } 안의 변수 이름이 같은 경우에는,
@PathVariable
아노테이션은 생략 가능하다.- 하지만 개인적으로는 코드의 가독성을 위해, 해당 아노테이션을 계속 사용하는 것을 권장한다.
2. URL 변수로 파라미터 넘기기
URL 주소 마지막에 ?
키워드를 붙힌 후, 변수를 넘겨주는 방식이다.
다양한 변수를 간편하게 넘길 수 있다.
URL 예시
사용법
@GetMapping("/{userId}/watch/new/")
public String addWatch_get(@PathVariable String userId, Model model, @RequestParam String id, @RequestParam String pw){
model.addAttribute("userId", userId);
if (userService.checkIdPw(id, pw))
return "watch_createForm.html";
else return "redirect:/user/"+userId+"/watches/";
}
- 메소드의 매개변수로 URL을 통해 넘길 파라미터들을 담을 매개변수들을 추가한다.
- 해당 매개변수들에는
@PathVariable
아노테이션을 추가한다.
- 해당 매개변수들에는
'Back End > Spring && Spring Boot' 카테고리의 다른 글
스프링 부트에서 JDBC Template 사용하기(MySQL) (0) | 2024.06.01 |
---|---|
스프링 부트 DB 연동(MySQL, JDBC Template) (0) | 2024.06.01 |
Spring 웹 계층 구조, Spring Web Layer (0) | 2024.06.01 |
[인프런 강의] 스프링 빈 설정하기 (0) | 2024.06.01 |
[인프런강의] 스프링 웹 개발 기초(정적 컨텐츠, MVC, API) (0) | 2024.06.01 |