Java/SPRING

스프링 프레임워크 [Spring Framework] MVC 컨트롤러(Controller) 메서드의 파라미터 타입

백엔드 신입사원( soft 5.10 입사) 2021. 12. 22. 17:40
반응형

컨트롤러의 @RequestMapping Annotation이 적용된 메서드는 커맨드 Class뿐만 아니라 HttpServletRequest, HttpSession, Locale 등 WEB Application과 관련된 다양한 타입의 파라미터를 가질 수 있는데, 전달 가능한 파라미터 타입은 아래와 같다.

@RequestParam Annotation을 이용한 파라미터 Mapping

컨트롤러를 구현하면서 가장 많이 사용되는 Annotation이 @RequestParam이다.

HTTP 요청 파라미터를 메서드의 파라미터로 전달받을 때 사용된다.

code에서 첫번째 파라미터는 query요청파라미터의 값을 전달받으며 두번째는 파라미터는 pageNumber는 p 파라미터의 값을 전달 받는다.

적용된 파라미터가 String가 아닐경우 실제 타입에 따라서 알맞는 타입으로 변환된다.

pageNumber의 파라미터 타입은 int 타입인데 이경우 자동으로 문자열을 int타입으로 변환시켜준다.

int타입으로 변환 할수 없는 값인 "a"를 pageNumber 파라미터에 매핑되는 HTTP요청파라미터로 전달되면 SPRING MVC는 잘못된요청을 의미하는 400응답 오류를 브라우저에 송출한다.

또한 @RequestParam에 명시한 HTTP요청 파라미터가 존재하지 않을 경우 이와 동일하게 400응답 오류를 송출한다.

만일 필수가 아닌 파라미터의 경우는 required 속성 값을 false로 지정해줘야한다 기본은 true로 되어있어 응답 오류가 송출된다. 필수가 아닌 요청파라미터 값이 존재하지 않을 경우 null 값을 할당해준다. 그런데, null을 할당할 수 없는 기본 데이터 타입인 경우에는 타입 변환 에러가 발생하게 된다. 예를 들어, 위 Code에서 “p” 요청 파라미터를 필수가 아닌 파라미터로 설정했는데, 이 상태에서 “p” 요청 파라미터를 지정하지 않은 경우 null을 기본 데이터 타입으로 변환할 수 없다는 예외가 발생하게 된다. 기본 데이터 타입을 사용할 경우 HTTP 요청 파라미터가 존재하지 않으면 기본 값을 할당하는 경우가 많은데, 이런 경우에는 위의 내용처럼 defaultValue 속성을 이용해서 기본값을 지정할 수 있다.

jsp 처리 결과.

 
반응형