HttpServletRequest, HttpServletResponse

2025. 1. 29. 13:50·강의/스프링 MVC 2편
 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런

김영한 | , 원리를 알아야 핵심이 보인다!김영한의 스프링 MVC 활용편 👨‍💻 📌 수강 전 확인해주세요! 본 강의는 자바 스프링 완전 정복 시리즈의 다섯 번째 강의입니다. 우아한형제들 최연소

www.inflearn.com


HttpServletRequest

서블릿은 HTTP 요청 메세지를 파싱하고 그 결과를 HttpServletRequest 객체에 담아서 제공해 준다.

이 외에도 여러 부가기능을 제공한다.

임시 저장소 기능 (해당 HTTP 요청의 시작부터 끝날 때까지 유지되는 임시 저장소 기능)

  • 저장 : request.setAttribute(name, value)
  • 조회 : request.getAttribute(name)

세션 관리 기능 request.getSession(true)

  • true : 세션이 있으면 기존 세션 반환, 없으면 새로 생성
    • getSession()과 getSession(true)은 동일하다! (기본값이 ture)
  • false : 세션이 있으면 기존 세션 반환, 없으면 null 반환

HTTP 요청 데이터

HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자.
주로 다음 3가지 방법을 사용한다.

1. GET - 쿼리 파라미터

  • localhost:8080/request-param?username=hello&age=20
  • URL에 다음과 같이 ? 를 시작으로 보내고 추가 파라미터는 &로 구분
  • 메시지 바디 없이 URL의 쿼리 파라미터에 데이터를 포함해서 전달
  • ex) 검색, 필터, 페이징등에서 많이 사용하는 방식
// 단일 파라미터 조회 (하나의 이름에 하나의 값만 있을 때 사용해야 함)
String username = request.getParameter("username");

// 파라미터 이름들 모두 조회
Enumeration<String> parameterNames = request.getParameterNames();

// 파라미터를 Map으로 조회
Map<String, String[]> parameterMap = request.getParameterMap();

// 복수 파라미터 조회 (하나의 이름에 값이 여러 개일 때)
String[] usernames = request.getParameterValues("username");

2. POST - HTML Form

  • content-type: application/x-www-form-urlencoded
    • content-type : 메세지 바디의 데이터 형식 지정
    • application/x-www-form-urlencoded : 폼으로 데이터를 전송하는 형식
  • 메시지 바디에 쿼리 파리미터 형식으로 전달 (username=hello&age=20)
  • ex) 회원 가입, 상품 주문, HTML Form 사용

파라미터 조회는 GET과 동일한 방식으로 사용하면 된다!

3. HTTP message body에 데이터를 직접 담아서 요청

  • HTTP API에서 주로 사용 (JSON, XML, TEXT)
  • 데이터 형식은 주로 JSON 사용
  • POST, PUT, PATCH 사용 가능

메세지 바디 - TEXT

ServletInputStream inputStream = request.getInputStream(); // 메세지 바디의 내용을 바이트 코드로 반환
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);

메세지 바디 - JSON

private ObjectMapper objectMapper = new ObjectMapper(); // JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환

JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 Jackson, Gson 같은 JSON 변환 라이브러리를 추가해서 사용해야 한다.

스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson 라이브러리 (ObjectMapper)를 함께 제공한다.


HttpServletResponse

  • HTTP 응답 메시지 생성
    • HTTP 응답코드 지정
    • 헤더 생성
    • 바디 생성
  • 편의 기능 제공

Content 편의 메서드

private void content(HttpServletResponse response) {
    //Content-Type: text/plain;charset=utf-8
    //Content-Length: 2
    //response.setHeader("Content-Type", "text/plain;charset=utf-8");
    response.setContentType("text/plain");
    response.setCharacterEncoding("utf-8");
    //response.setContentLength(2); //(생략 시 자동 생성)
}

 

쿠키 편의 메서드

private void cookie(HttpServletResponse response) {
    //Set-Cookie: myCookie=good; Max-Age=600;
    //response.setHeader("Set-Cookie", "myCookie=good; Max-Age=600");
    Cookie cookie = new Cookie("myCookie", "good");
    cookie.setMaxAge(600); //600초
    response.addCookie(cookie);
}

redirect 편의 메서드

private void redirect(HttpServletResponse response) throws IOException {
    //Status Code 302
    //Location: /basic/hello-form.html
    //response.setStatus(HttpServletResponse.SC_FOUND); //302
    //response.setHeader("Location", "/basic/hello-form.html");
    response.sendRedirect("/basic/hello-form.html");
}

'강의 > 스프링 MVC 2편' 카테고리의 다른 글

서블릿과 멀티스레드  (1) 2025.01.29
'강의/스프링 MVC 2편' 카테고리의 다른 글
  • 서블릿과 멀티스레드
밍구킴
밍구킴
공부한 것들 끄적끄적 하는 공간
  • 밍구킴
    Dev Log
    밍구킴
    • 분류 전체보기 (23)
      • 네트워크 (2)
      • 자료구조 (0)
      • 알고리즘 (0)
      • 모니터링 (1)
      • Java (1)
      • 트러블 슈팅 (0)
      • 강의 (15)
        • CS 지식의 정석 (0)
        • 스프링 핵심 원리 - 기본편 (6)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (0)
        • 스프링 MVC 1편 (0)
        • 스프링 MVC 2편 (2)
        • 스프링 DB 1편 (4)
        • 스프링 DB 2편 (3)
        • 백엔드 이력서 차별화 전략 (0)
      • Project (4)
        • 중고타운 (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
밍구킴
HttpServletRequest, HttpServletResponse
상단으로

티스토리툴바