@RequestParam

InOut·2023년 5월 12일
1
post-thumbnail

RequestParam란?

  • 요청의 파라미터를 연결할 매개변수에 붙이는 애너테이션

매개변수가 String Type일 경우 ---- >>>>

@RequestMapping("/requestParam")
// public String main(@ReuestParam(name="year" required=false) String year {String year) {
public String main(String year) {	// 애너테이션 생략 가능, 위와 동일하다
	// http://localhost/inout/requestParam	    ---> year=null
    // http://localhost/inout/requestParam?year ---> year=""
    return "view";
}	
@RequestMapping("/requestParam")
// public String main(@ReuestParam(name="year" required=true) String year {String year) {
public String main(@RequestParam String year) {	// 위와 동일하다
	// http://localhost/inout/requestParam	    ---> year=null	400 Bad Request, required=true라서 에러 발생
    // http://localhost/inout/requestParam?year ---> year=""
    return "view";
}	

매개변수가 int Type일 경우 ---- >>>>

@RequestMapping("/requestParam")
public String main(@RequestParam(required=false) int year) {
	// http://localhost/inout/requestParam	    
    ---> 500, java.lang.IllegalStateException 발생
    	 false라서 파라미터 없을 시 null이 들어가는데 null을 int로 변환할 수 없어서,
    // http://localhost/inout/requestParam?year 
    ---> 400 Bad Request
    	 빈문자열이 들어오는데 빈문자열을 int로 바꿀 수 없음. 값을 주긴 줬는데
         잘못줬으니 클라이언트 에러인 400에러가 뜬다.
         
    return "view";
}	

따라서 필수값이 아닐경우 다음과 같이 기본값을 줘야한다.
public String main(@RequestParam(required=false, defaultValue="1") int year) {
@RequestMapping("/requestParam")
public String main(@RequestParam(required=true) int year) {
	// http://localhost/inout/requestParam	    
    ---> 400, 필수 입력인데 안넣어서 클라이언트 에러
    // http://localhost/inout/requestParam?year 
    ---> 400, 빈문자열을 줘도 숫자로 변환할 수 없으니 클라이언트에러
    
    return "view";
}	

따라서 필수값이 아닐경우 다음과 같이 기본값을 줘야한다.
public String main(@RequestParam(required=false, defaultValue="1") int year) {

* required=true 일 때는 값을 입력안하거나 잘 못 입력하면 에러가 발생하니 반드시 예외처리를 하여 사용자가 올바른 값을 입력할 수 있게 처리해주는게 좋다.

반대로 required=false일 경우엔, 디폴트 값을 줘야한다.

profile
개발새발

0개의 댓글

관련 채용 정보