@RequestParam은 Spring Framework에서 웹 요청의 파라미터를 메서드의 매개변수로 바인딩하기 위해 사용되는 어노테이션입니다. 주로 웹 애플리케이션의 컨트롤러에서 사용되며, HTTP 요청의 파라미터를 컨트롤러 메서드의 매개변수로 전달받을 때 활용됩니다.
@RequestParam은 다양한 속성을 제공하여 파라미터의 동작을 커스터마이징할 수 있습니다. 가장 간단한 형태는 아래와 같습니다
@GetMapping("/example")
public String exampleMethod(@RequestParam String parameterName) {
// 메서드 내용...
return "result";
}
위의 예시에서 parameterName은 HTTP 요청의 파라미터 중에서 "parameterName"이라는 이름의 값을 받아옵니다. 이 값은 자동으로 문자열로 변환되어 매개변수에 전달됩니다.
일반적으로 @RequestParam의 주요 속성은 다음과 같습니다:
- name: 요청 파라미터의 이름을 지정합니다. 기본값은 메서드 매개변수의 이름과 동일합니다.
- required: 해당 파라미터가 반드시 필요한지 여부를 나타냅니다. 기본값은 true이며, false로 설정하면 요청에 해당 파라미터가 없어도 됩니다.
- defaultValue: 요청에 해당 파라미터가 없을 경우 사용할 기본값을 지정합니다.
- 예를들어
@GetMapping("/example")
public String exampleMethod(
@RequestParam(name = "param", required = false, defaultValue = "default") String parameter) {
// 메서드 내용...
return "result";
}
이 경우 "param"이라는 이름의 요청 파라미터를 받아오며, 해당 파라미터가 없을 경우 기본값으로 "default"를 사용합니다.
@RequestParam은 주로 HTTP GET 요청의 쿼리 문자열이나 POST 요청의 폼 데이터를 처리하는 데에 사용되며, 컨트롤러 메서드의 매개변수로 받은 값을 활용하여 비즈니스 로직을 수행할 수 있습니다.
HTTP GET 요청의 쿼리 문자열(쿼리스트링)은 URL에 포함된 매개변수로, 클라이언트가 서버에 데이터를 전달하는 방법 중 하나입니다. 쿼리 문자열은 URL의 끝에 물음표(?)로 시작하며, 그 뒤에 key=value 형태로 매개변수를 전달합니다. 여러 매개변수를 전달할 때는 앰퍼샌드(&)로 구분합니다.
예를 들어, 다음은 이름과 나이라는 두 개의 매개변수를 포함한 간단한 HTTP GET 요청의 URL입니다:
http://example.com/user?name=John&age=25
위 URL에서 "name"과 "age"는 각각 매개변수의 이름이고, "=" 뒤에 오는 값은 해당 매개변수의 값입니다.
Spring Framework에서는 @RequestParam 어노테이션을 사용하여 이러한 쿼리 문자열의 매개변수를 컨트롤러 메서드의 매개변수로 쉽게 바인딩할 수 있습니다. 예를 들어, 다음은 Spring 컨트롤러에서 쿼리 문자열의 매개변수를 받아오는 예시입니다:
@GetMapping("/user")
public String getUserInfo(
@RequestParam String name,
@RequestParam int age) {
// name과 age를 사용하여 비즈니스 로직 수행
return "User Information";
}
이런 식으로 컨트롤러 메서드의 매개변수에 @RequestParam 어노테이션을 사용하면 Spring이 자동으로 쿼리 문자열에서 해당 매개변수를 추출하여 바인딩해줍니다.
총 정리
pring Framework에서는 웹 요청의 파라미터를 컨트롤러 메서드의 매개변수로 바인딩하기 위해 @RequestParam 어노테이션을 사용합니다. 이 어노테이션은 HTTP 요청에서 파라미터를 추출하여 메서드의 매개변수에 자동으로 매핑해줍니다.
아래는 간단한 예시를 통해 설명하겠습니다
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class MyController {
@GetMapping("/example")
public String exampleMethod(@RequestParam String parameterName) {
// 메서드 내용...
return "result";
}
}
이 예시에서 /example 경로로 들어오는 HTTP GET 요청에서 parameterName이라는 이름의 파라미터를 추출하여 exampleMethod 메서드의 매개변수로 자동으로 바인딩합니다.
다른 예시를 통해 몇 가지 중요한 사항을 살펴보겠습니다:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class MyController {
@GetMapping("/user")
public String getUserInfo(
@RequestParam String name,
@RequestParam int age) {
// name과 age를 사용하여 비즈니스 로직 수행
return "User Information";
}
}
이 경우 /user 경로로 들어오는 HTTP GET 요청에서 "name"과 "age"라는 두 개의 파라미터를 추출하여 각각 name과 age 매개변수에 자동으로 바인딩합니다. Spring은 자동으로 매개변수의 타입에 맞게 변환을 수행합니다.
또한, 기본적으로 @RequestParam은 해당 파라미터가 반드시 필요한 것으로 간주됩니다. 만약 필수가 아닌 파라미터라면 required 속성을 false로 설정하여 해당 파라미터가 없어도 컨트롤러 메서드를 호출할 수 있습니다. 또한, 기본값을 설정할 수도 있습니다.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class MyController {
@GetMapping("/user")
public String getUserInfo(
@RequestParam(name = "name", defaultValue = "Guest") String userName,
@RequestParam(name = "age", required = false) Integer userAge) {
// userName과 userAge를 사용하여 비즈니스 로직 수행
return "User Information";
}
}
위의 예시에서 name 파라미터는 기본값으로 "Guest"를 갖고, age 파라미터는 필수가 아닙니다. 만약 요청에 name이 포함되지 않으면 "Guest"로 기본값이 설정되고, age가 포함되지 않아도 userAge 매개변수는 null로 설정됩니다.
'스프링Spring' 카테고리의 다른 글
@controller @restcontroller 차이 (1) | 2025.01.09 |
---|---|
@Resource 와 @Autowired (0) | 2024.01.12 |
@RequestBody , @ResponseBody/@RestController (1) | 2024.01.11 |
HikariCP에 대해 알아보기 (0) | 2023.09.04 |
Model,ModelAndView (0) | 2023.08.29 |