Spring - Servlet 기초

신정범·2026년 2월 7일

Spring

목록 보기
2/6
post-thumbnail

서블릿(Servlet) 기초 정리

— HTTP 요청 메시지 받는 방법 중심

웹 애플리케이션에서 클라이언트의 요청(Request)을 서버가 어떻게 받는지
가장 기본이면서도 중요한 개념이다.

서블릿(Servlet)에서는 이 요청 정보를
HttpServletRequest 객체를 통해 처리한다.


1. HttpServletRequest란?

HttpServletRequest클라이언트가 서버로 보낸 HTTP 요청 정보를 담고 있는 객체이다.

이 객체를 통해 다음과 같은 정보를 읽을 수 있다.

  • 요청 방식 (GET, POST)
  • URL, URI
  • 파라미터 값
  • HTTP 헤더
  • 요청 바디(JSON 등)
  • 세션 정보

즉, 사용자가 서버로 보낸 모든 정보의 집합이다.
(Spring에서는 이 객체를 추상화해 더 편하게 사용할 수 있다.)


2. 요청 메시지를 받는 방법 3가지

서블릿(또는 Spring MVC)에서 요청 데이터를 받는 방식은
크게 3가지로 나눌 수 있다.


2-1. HTTP 파라미터 방식 (Query String / Form Data)

✔ 사용 예

  • GET 쿼리 스트링
  • POST application/x-www-form-urlencoded
/login?username=kim&age=25
쿼리 파라미터에 정보를 전달하는 부분이다. 

``` java
String username = request.getParameter("username");
String age = request.getParameter("age");

복수 파라미터

String[] hobbies = request.getParameterValues("hobby");

특징
• 항상 String 타입으로 전달됨
• 단순 데이터 처리에 적합
• HTML form 전송 방식


② HTTP 메시지 바디(JSON)

REST API에서 가장 많이 사용하는 방식이다.

요청예시

{
  "name": "jeongbeom",
  "age": 25
}

서버 처리 코드

ObjectMapper objectMapper = new ObjectMapper();

UserDto user = objectMapper.readValue(
    request.getInputStream(),
    UserDto.class
);
  • JSON으로 파라미터 값을 읽으려면 ObjectMapper.readValue(변수명, 클래스이름)을 사용한다.

특징
• 객체 단위로 데이터 처리 가능
• 타입 안정성 확보
• RESTful API에 적합


③ Path Variable (경로 변수)

URL 경로 자체에 값을 포함하는 방식이다.

GET /users/10
@GetMapping("/users/{id}")
public String find(@PathVariable Long id) {
    return "id = " + id;
}

특징
• 리소스 식별에 적합
• URL 의미가 명확
• REST API 설계에 필수


3. 요청 메시지 방식 한눈에 비교

방식예시사용 방법
HTTP 파라미터?name=kimrequest.getParameter()
JSON 바디{ "name": "kim" }ObjectMapper.readValue()
Path Variable/users/10@PathVariable

4. request vs response

객체역할
HttpServletRequest클라이언트 요청 읽기
HttpServletResponse클라이언트 응답 보내기

요청 데이터는 무조건 request에서 읽는다


5. 정리

  • 서블릿에서 요청은 HttpServletRequest 객체를 통해 처리한다
  • 요청 메시지를 받는 방법은 크게 3가지가 있다
    1. HTTP 파라미터 방식
    2. JSON 메시지 바디 방식
    3. Path Variable 방식
  • JSON 데이터는 ObjectMapper.readValue()를 사용해 객체로 변환한다

profile
성장하는 개발자가 되겠습니다

0개의 댓글