✏️ HttpServlet 요청과 응답

2026. 7. 18. 18:43·Backend/Spring MVC

이 글은 Velog에서 이전한 글입니다. Velog 원문 보기

⭐️Servlet?

Servlet은 동적인 웹페이지를 만들 때 사용되는 자바 기반 프로그래밍 기술이다. Servlet은 복잡한 웹 요청과 응답 과정을 간단한 메서드 호출로 다룰 수 있게 해준다.

public class ResponseJsonServlet extends HttpServlet {
    ObjectMapper objectMapper = new ObjectMapper();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {...}

📌 Servlet 동작 방식


클라이언트가 웹 서버에 HTTP 요청 메세지를 보내면 서버가 request, response 객체를 생성하고 서블릿 컨테이너에 있는 Servlet을 호출하면서 객체를 넘겨준다. Servlet이 작업을 한 뒤 종료되면서 HTTP 응답 메세지를 반환한다.

HTTP 응답에서 Content-Length 등의 부가 정보는 서버가 자동으로 생성한다.

📌 HttpServletRequest

HttpServletRequest 역할: 개발자가 HTTP 요청 메세지를 편리하게 사용할 수 있도록 HTTP 요청 메세지를 파싱한다. 그 결과를 HttpServletRequest 객체에 담아서 제공한다.

HttpServlet 객체는 HTTP 요청 메세지만 읽는 것이 아니라 임시 저장소 등의 부가 기능도 제공한다.

/** 저장: HTTP 요청 메세지 안에 작은 데이터 저장소가 존재한다. 
HTTP 요청 메세지가 살아있는 동안 사용할 수 있게 데이터를 넣어준다. **/
request.setAttribute(name, value)
/** 조회: HTTP 속 데이터 저장소에서 데이터를 꺼낸다. **/
request.getAttribute(name)

✔︎ HTTP 요청 데이터 - GET Query Parameter

  • url?name=psm&age=23
  • 메세지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
  • 검색, 필터, 페이징 등에서 많이 사용하는 방식

Query Parameter는 URL에 ?를 시작으로 보낼 수 있다. 추가 Parameter는 &로 구분하면 된다.
EX) http://localhost:8080?username=park&age=20

request.getParameter("username"); //단일 파라미터 조회 
request.getParameterNames(); //파라미터 이름들 모두 조회
request.getParameterMap(); //파라미터를 Map 으로 조회
request.getParameterValues("username"); //이름이 같은 복수 파라미터 조회

url?username=kim&username=park <- 이처럼 Paramerter의 이름은 하나인데 값이 중복일 때 request.getParameter("username")를 하면 첫 번째 값을 반환한다.

✔︎ HTTP 요청 데이터 - POST HTML Form

  • content-type: application/x-www-form-urlencoded
  • 메세지 바디에 Query Parameter 형식으로 데이터를 전달한다.

application/x-www-form-urlencoded 형식은 이전에 작성한 GET에서 본 Query Parameter 형식과 같다.

클라이언트 입장에서는 두 방식에 차이가 존재하지만, 서버 입장에서는 동일한 형식으로 인식하므로 request.getParameter()로 구분없이 조회 가능하다.

✔︎ HTTP 요청 데이터 - API 메세지 바디

  • HTTP message body에 데이터를 직접 담아서 요청
  • HTTP API에서 주로 사용한다. (JSON, XML, TEXT)
  • 데이터 형식은 주로 JSON을 사용한다.

김영한님의 스프링 MVC 강의
김영한님의 인프런 로드맵을 따라가면서 스프링을 공부하고 있습니다.
공부한 내용들을 velog에 정리합니다!

'Backend > Spring MVC' 카테고리의 다른 글

✏️ 요청 매핑  (0) 2026.07.18
✏️ Logging  (0) 2026.07.18
✏️ Spring MVC 시작하기  (0) 2026.07.18
✏️ Front Controller 패턴, Adapter 패턴  (0) 2026.07.18
✏️ MVC 패턴  (0) 2026.07.18
'Backend/Spring MVC' 카테고리의 다른 글
  • ✏️ Logging
  • ✏️ Spring MVC 시작하기
  • ✏️ Front Controller 패턴, Adapter 패턴
  • ✏️ MVC 패턴
pp8817
pp8817
공부한 내용, 개발 관련 지식, 트러블 슈팅 등을 기록합니다. 이전 블로그: https://velog.io/@pp8817/posts
  • pp8817
    끄적이는 개발 log
    pp8817
  • 전체
    오늘
    어제
    • 분류 전체보기 (273)
      • Project (71)
        • 척척학사 (29)
        • Book (23)
        • Saynow (3)
        • YAPP 27기 (4)
        • 나의 작은 프로젝트 (10)
        • Landit (2)
      • Backend (88)
        • Spring (13)
        • Spring MVC (13)
        • Spring Security (4)
        • JPA (26)
        • Database (19)
        • HTTP·Web (13)
        • Architecture (0)
      • Language·CS (59)
        • Java·Kotlin (5)
        • CS Interview (17)
        • Backend Interview (5)
        • Concepts (32)
      • Algorithm (25)
        • Algorithm (24)
        • 소마 알고리즘 스터디 (1)
      • Infra (8)
      • Troubleshooting (11)
      • Retrospective (6)
      • Etc (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HTTP WEB 기본 지식
    Algorithm
    척척학사
    Spring MVC
    Spring
    트러블슈팅
    Book
    개념 정리!
    게시판
    Project
    CS Interview
    jpa
    Python
    나의 작은 프로젝트
    interview
    BOJ
    OS
    java
    http
    object
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
pp8817
✏️ HttpServlet 요청과 응답
상단으로

티스토리툴바