Spring

[Spring] 스프링 MVC(6) - @RequestParam 어노테이션

재담 2022. 3. 13. 20:17

@RequestParam 어노테이션을 이용한 요청 파라미터 구하기

@RequestParam 어노테이션을 사용하면 메서드의 파라미터를 이용해서 HTTP 요청 파라미터를 받을 수 있다. 다음은 예이다.

@Controller
@RequestMapping("/event")
public class EventController {
    @RequestMapping("/detail2")
    public String detail2(@RequestParam("id") long eventId, Model model) {
        Event event = getEvent(eventId);
        if (event == null) {
            return REDIRECT_EVENT_LIST;
        }
        
        model.addAttribute("event", event);
        return "event/detail";
    }
    
    // 이하 생략
    ...
}

스프링은 메서드의 파라미터 타입에 맞게 변환을 한다. 위 코드에서 eventId 파라미터의 타입이 long이므로, "id" 요청 파라미터의 값을 long 타입으로 알맞게 변환해준다.

 

요청 파라미터의 값이 없거나 해당 타입으로 변환할 수 없는 경우, 스프링은 컨트롤러의 메서드를 실행하지 않고 바로 400 에러 코드를 클라이언트에 응답한다.

 

요청 파라미터가 필수가 아니라면 다음과 같이 @RequestParam 어노테이션의 required 속성 값을 false로 지정해주면 된다. 만약 요청 파라미터가 존재하지 않으면 400 에러 코드 대신 해당 파라미터에 null을 리턴한다.

@Controller
public class SearchController {
    @RequestMapping("/search")
    public String search(@RequestParam(value="q", required=false) String query, Model model) {
        // 이하 생략
        ...
    }
    
    // 이하 생략
    ...
}

 

다음과 같이 defaultValue 속성을 사용하면, 요청 파라미터가 존재하지 않을 때 null 대신 다른 값을 사용하도록 설정할 수 있다.

@Controller
public class SearchController {
    @RequestMapping("/search")
    public String search(@RequestParam(value="q", defaultValue="") String query, Model model) {
        // 이하 생략
        ...
    }
    
    // 이하 생략
    ...
}

Reference

  • 웹 개발자를 위한 Spring 4.0 프로그래밍 (최범균 저)