@RequestParam

aiden·2024년 1월 1일
0

점프 투 스트링부트

목록 보기
13/22

스프링 프레임워크에서 제공하는 어노테이션 중 하나로, HTTP 요청 파라미터 값을 컨트롤러 메서드의 매개변수로 바인딩하는 데 사용한다.

검색어를 입력받아 해당 검색어에 맞는 결과를 반환하는 경우, 다음과 같이 @RequestParam을 사용한다.

@GetMapping("/search")
public String search(@RequestParam("query") String query) {
	...
}

위 코드에서 @RequestParam("query") String query는 HTTP 요청의 파라미터 중 query라는 이름의 값을 String 타입의 query 매개변수로 받아온다.

예를 들어 /search?query=abcd 이라는 요청이 들어오면, query 매개변수는 "abcd"이라는 값을 가지게 된다.

다음과 같이 required 속성을 false로 설정하면 해당 파라미터가 없어도 에러를 발생시키지 않는다.

@GetMapping("/search")
public String search(@RequestParam(value = "query", required = false) String query) {
	...
}

이렇듯 @RequestParam을 사용하면 HTTP 요청의 파라미터를 간편하게 처리하여 동적인 웹 페이지를 구현할 수 있다.

❗form에서 값을 받아오는 경우, @RequestParam의 value 값은 html 파일에서의 입력 항목과 이름이 동일해야 한다.
다음 예시를 보자.

form.html

<form th:action="@{/question/create}" method="post">
        <div class="mb-3">
            <label for="subject" class="form-label">제목</label>
            <input type="text" name="title" id="title" class="form-control">
        </div>
        <div class="mb-3">
            <label for="content" class="form-label">내용</label>
            <textarea name="content" id="content" rows="10"></textarea>
        </div>
        <input type="submit" value="등록하기" class="btn btn-primary my-2">
</form>

controller.java

@GetMapping("/create")
public String questionCreate(){
	return "question_from";
}

@PostMapping("/create")
public String questionCreate(@RequestParam(value = "title") String title, @RequestParam(value = "content") String content){
	...
    return "redirect:/question/list";
}

form.html에서 입력 항목으로 사용한 title, content와 RequestParam의 value 값을 동일하게 작성한 것을 확인할 수 있다.

profile
파인애플 좋아하세요?

0개의 댓글