본문 바로가기
카테고리 없음

@RequestParam | JAVA | annotation

by 개발도하는음바페 2023. 9. 4.

자바에서 @RequestParam은 스프링 프레임워크의 웹 애플리케이션 개발에서 사용되는 어노테이션 중 하나입니다.

이 어노테이션은 HTTP 요청 파라미터(parameter)를 컨트롤러 메서드의 매개변수로 바인딩하거나 추출할 때 사용됩니다.

주로 웹 요청을 처리하는 컨트롤러 메서드에서 클라이언트로부터 전송된 데이터를 처리하는 데 사용됩니다.

 

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

    @RequestMapping("/register")
    public String registerUser(
        @RequestParam("username") String username,
        @RequestParam("password") String password) {
        
        // username과 password를 사용하여 사용자 등록 로직을 수행합니다.
        
        return "registration_success"; // 사용자 등록이 성공하면 success 페이지로 리다이렉트
    }
}

 

위의 코드에서 @RequestParam 어노테이션은 username 및 password HTTP 요청 파라미터를 해당 메서드의 매개변수에 매핑합니다.

클라이언트가 /register 엔드포인트로 POST 요청을 보낼 때, 요청의 username 및 password 파라미터가 이 메서드로 전달되어 사용자 등록 프로세스를 진행하게 됩니다.

@RequestParam 어노테이션을 사용하면 HTTP 요청의 쿼리 문자열 파라미터 또는 POST 요청의 폼 데이터를 간편하게 처리할 수 있으며, 타입 변환 및 기본값 설정과 같은 다양한 옵션을 제공합니다. 이를 통해 웹 애플리케이션에서 클라이언트와 상호작용하는 데 유용한 기능을 제공할 수 있습니다.

 

@RequestParam의 특징과 사용법

 

1. HTTP 요청 파라미터 추출: @RequestParam을 사용하면 클라이언트가 전송한 HTTP 요청의 파라미터를 메서드의 매개변수로 추출할 수 있습니다. 메서드 내에서 이러한 파라미터를 직접 사용할 수 있게 됩니다.

 

2. 파라미터 이름 매핑: @RequestParam 어노테이션 내부에는 파라미터의 이름을 지정할 수 있습니다. 예를 들어, @RequestParam("username")과 같이 사용하면 클라이언트가 전송한 요청의 "username" 파라미터를 매핑할 수 있습니다.

 

3. 타입 변환: @RequestParam을 사용하면 스프링이 자동으로 파라미터 값을 메서드의 매개변수 타입으로 변환합니다. 예를 들어, @RequestParam("age") int age와 같이 사용하면 클라이언트가 전송한 "age" 파라미터를 자동으로 int 타입으로 변환하여 매개변수에 할당합니다.

 

4.기본값 설정: 파라미터가 요청에 없는 경우, @RequestParam 어노테이션을 통해 기본값을 설정할 수 있습니다. 예를 들어, @RequestParam(value = "page", defaultValue = "1") int page와 같이 사용하면 "page" 파라미터가 요청에 없는 경우 기본값으로 1이 사용됩니다.

 

5.필수 여부 지정: @RequestParam 어노테이션을 사용할 때 파라미터를 필수로 설정할 수 있습니다. required 속성을 true로 지정하면 해당 파라미터가 요청에 반드시 포되어야 합니다. 만약 요청에 해당 파라미터가 없다면 예외가 발생합니다.

 

6.다중 파라미터 처리: 같은 이름의 파라미터가 여러 개 전송될 때, @RequestParam 어노테이션을 사용하여 배열 또는 컬렉션으로 파라미터를 수집할 수 있습니다.

 

간단한 예제

@Controller
public class MyController {

    @GetMapping("/search")
    public String search(
        @RequestParam("q") String query,
        @RequestParam(value = "page", defaultValue = "1") int page) {
        
        // "q"와 "page" 파라미터를 사용하여 검색 로직을 수행합니다.
        
        return "search_results";
    }
}

 

@ModelAttribute 를 사용하는 이유?

-> @RequestMapping이 여러개일경우 가독성이 떨어지며, 유지보수가 까다로움, 검색조건이 늘어남에 따라 계속 늘어나는 것도 문제

 

_잘구분하여 사용하는 것이 좋다!