본문 바로가기
Programming/Spring

@RequestParam

by hongchii 2022. 1. 1.
728x90
반응형

 

@RequestParam은 요청의 파라미터를 연결할 매개변수에 붙이는 애너테이션이다.

// 1번
@RequestMapping("/requestParam1")
public String main2(@RequestParam(name="year", required=false) String year) {

}

// 1-1번
@RequestMapping("/requestParam1")
public String main2(String year) {

}

 

1번과 1-1번은 동일한 의미이다. @RequestParam(name="year" , required=false)는 생략가능하다.

year는 파라미터 이름이고, required는 필수여부이다. false는 필수가 아님을 의미한다.

http://localhost:8080/requestParam1을 호출하면 year=null 이다.

http://localhost:8080/requestParam1?year를 호출하면 year=""(빈문자열) 이다.

 

// 2번
@RequestMapping("/requestParam2")
public String main3(@RequestParam(name="year", required=true) String year) {

}

// 2-1번
@RequestMapping("/requestParam2")
public String main3(String year) {

}

2번과 2-1번은 동일한 의미이다. required가 true이기 때문에 파라미터를 필수로 입력해야한다. http://localhost:8080/requestParam2를 호출하면 year=null 이고 400 Bad Request에러가 난다.

이유는 required=true이기 때문에 클라이언트 에러가 발생하는 것이다.

http://localhost:8080/requestParam2?year을 호출하면 year=""(빈문자열) 이다. "빈문자열"이 "값"으로 들어왔기 때문에 에러가 나지 않는다.

 

// 3번
@RequestMapping("/requestParam3")
public String main4(@RequestParam(required=false) int year){

}

http://localhost:8080/requestParam3을 호출하면 year=null 이고, 500 java.lang.IllegalStateException 에러가 난다.

이유는 required=false이기 때문에 클라이언트는 입력을 하지 않은 것인데 들어온 null값은 int로 변환할 수 없기때문에 서버에러가 발생되는 것이다.

http://localhost:8080/requestParam3?year을 호출하면 year=""(빈문자열) 이고, 400 Bad Request. 클라이언트 에러가 발생한다. 이유는 빈문자열은 int로 변환할 수 없기 때문이다. (위에 String 예제와 다르다. int는 값을 받을 뿐 아니라 변환까지 해줘야하기 때문)

 

// 4번
@RequestMapping("/requestParam4")
public String main4(@RequestParam(required=true) int year){

}

 

http://localhost:8080/requestParam3을 호출하면 year=null 이고, 400 Bad Request. 의 클라이언트 에러가 발생한다.

필수입력이 true인데 입력하지 않았기 때문이다.

http://localhost:8080/requestParam3?year을 호출하면 year=""(빈문자열) 이고, 400 Bad Request. 클라이언트 에러가 발생한다. 이유는 빈문자열은 int로 변환할 수 없기 때문이다.

// 5번
@RequestMapping("/requestParam5")
public String main4(@RequestParam(required=false, defaultValue="1") int year){

}

필수입력(required=false)라면 기본값을 주는 것이 바람직하다. (defaultValue="1")

http://localhost:8080/requestParam5 호출하면 year=1 이다.

http://localhost:8080/requestParam3?year을 호출하면 year=1이다.

 

 

필수입력일때는 예외처리를 해서 사용자가 올바른 값을 입력할 수 있게 하는 것이 좋다.

 

 

 

728x90
반응형

'Programming > Spring' 카테고리의 다른 글

@GetMapping @PostMapping 그리고 view-controller  (0) 2022.01.02
@ModelAttribute  (0) 2022.01.02
JSTL이란? JSTL core태그  (0) 2021.04.19
[Spring] 스프링 MVC - Model (데이터 전달자)  (0) 2021.04.14
[Spring] xml 매퍼  (0) 2021.04.14

댓글