250x250
Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

개린이 개발노트

@RequestParam, 쿼리스트링 본문

스프링Spring

@RequestParam, 쿼리스트링

개린이9999 2024. 1. 12. 10:56
728x90

@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로 설정됩니다.

728x90

'스프링Spring' 카테고리의 다른 글

@Resource 와 @Autowired  (0) 2024.01.12
@RequestBody , @ResponseBody/@RestController  (1) 2024.01.11
HikariCP에 대해 알아보기  (0) 2023.09.04
Model,ModelAndView  (0) 2023.08.29
Spring MVC 구조 및 처리 순서  (0) 2023.07.07