IT/Spring
[Spring] @PathVariable 과 @RequestParam 이란?
chlee21
2021. 11. 30. 15:26
스프링에서 controller로 이동시 veiw에서 url로 파라미터를 전달할 수 있는데, 대표적 형태가 2가지 형태가 있다.
1유형 : http://www.test.com/board?seq=1
2유형 : http://www.test.com/board/1
@PathVariable 과 @RequestParam어노테이션은 url파라미터로 전달받은 value를 메서드의 파라미터로 받을 수 있게 해주는 어노테이션이다.
@RequestParam사용법
1유형 : http://www.test.com/board?seq=2
@GetMapping("/board")
public String save(@RequestParam("seq") int seq){
.....
}
위와 같을 경우 int seq로 들어온 값은 1이 된다.
파라미터의 value로 null이 들어오는 것을 방지하기 위해선 아래와 같이 required 설정을 false로 한다. (defualt : true)
String형으로 데이터 타입을 변환한 이유는 seq가 ""이 들어올 경우 NumberFormatException이 발생하게 된다.
@GetMapping("/board")
public String save(@RequestParam(value = "seq", required = false) String seq){
.....
}
@PathVariable 사용법
2유형 : http://www.test.com/board/1
@GetMapping("/board/{seq}")
public String save(@PathVariable int seq){
.....
}
위와 같을 경우 int seq로 들어온 값은 1이 된다.
주의할 점은 URL에 특수문자나 구분기호 " , , ` , . " 등을 사용하면 인식을 못한다.
@GetMapping("/board/{seq}")
public String save(@PathVariable("seq") int num){
.....
}
변수명을 바꿔서 사용하고 싶은 경우 @PathVariable('템플릿 변수명') url로 들어온 템플릿 변수명과 맵핑을 시켜주면 된다.
@RequestParam와 @PathVariable 복합 사용법
http://www.test.com/user/user?name=test
@PostMapping("/user/{category}")
public String save(@PathVariable("category") String category, @RequestParam(value = "name", required = false) String name){
....
}
위와 같이 코드를 실행하게 되면 category = user, name = test가 된다.