스프링에서 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가 된다.

+ Recent posts