minOS

스프링 MVC 기본 기능 - HTTP 요청 파라미터 본문

TIL/김영한의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

스프링 MVC 기본 기능 - HTTP 요청 파라미터

minOE 2024. 7. 28. 14:25
728x90

HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
1) GET - 쿼리 파라미터
- /url?username=hello&age=20
- 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
- 예) 검색, 필터, 페이징등에서 많이 사용하는 방식
2) POST - HTML Form
- content-type: application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20
- 예) 회원 가입, 상품 주문, HTML Form 사용
3) HTTP message body에 데이터를 직접 담아서
- 요청 HTTP API에서 주로 사용, JSON, XML, TEXT
- 데이터 형식은 주로 JSON 사용
- POST, PUT, PATCH

 

요청 파라미터 - 쿼리 파라미터, HTML Form

HttpServletRequest의 request.getParameter()를 사용하면 다음 두 가지 요청 파라미터를 조회할 수 있다.

1) GET 방식: 쿼리 파라미터 전송
GET 방식은 URL에 파라미터를 추가하여 서버에 데이터를 전송한다. 예를 들어, 다음과 같은 요청이 있을 때:
http://localhost:8080/request-param?username=hello&age=20​


위 URL은 username이라는 파라미터에 hello라는 값을, age라는 파라미터에 20이라는 값을 포함하고 있다.

이 경우 HttpServletRequest 객체의 request.getParameter() 메서드를 사용하여 다음과 같이 파라미터 값을 조회할 수 있다

String username = request.getParameter("username");
String age = request.getParameter("age");
위 코드를 통해 username 변수에는 hello가, age 변수에는 20이 저장된다.

2)POST 방식: HTML Form 전송
POST 방식은 폼 데이터를 HTTP 요청의 본문에 포함하여 서버로 전송한다. 예를 들어, 다음과 같은 HTML 폼이 있을 때
<form action="/request-param" method="post">
  <input type="text" name="username" value="hello">
  <input type="text" name="age" value="20">
  <button type="submit">Submit</button>
</form>​


클라이언트가 폼을 제출하면 서버로 다음과 같은 HTTP 요청이 전송된다

POST /request-param HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=hello&age=20
 
이 경우에도 HttpServletRequest 객체의 request.getParameter() 메서드를 사용하여 다음과 같이 파라미터 값을 조회할 수 있다
String username = request.getParameter("username");
String age = request.getParameter("age");​

위 코드를 통해 username 변수에는 hello가, age 변수에는 20이 저장된다.

 

 

스프링으로 요청 파라미터를 조회하는 방법

import com.example.springmvc.basic.HelloData;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.IOException;
import java.util.Map;

@Slf4j
@Controller
public class RequestParamController {

    // HttpServletRequest와 HttpServletResponse를 사용한 요청 파라미터 처리 예제
    @RequestMapping("request-param-v1")
    public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 요청 파라미터에서 username과 age를 추출
        String username = request.getParameter("username");
        int age = Integer.parseInt(request.getParameter("age"));

        // 로그로 username과 age 출력
        log.info("username = {} , age = {}", username, age);

        // 응답으로 "ok" 메시지 전송
        response.getWriter().write("ok");
    }
}

 


로그




Post Form
페이지 생성

먼저 테스트용 HTML Form을 만들어야 한다.

리소스는 `/resources/static` 아래에 두면 스프링 부트가 자동으로 인식한다.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/request-param-v1" method="post">
    username: <input type="text" name="username" /> age: <input type="text" name="age" /> <button type="submit">전송</button>
</form>
</body>
</html>



http://localhost:8080/basic/hello-form.html 접속

POST

 

 

 

728x90