HttpServletResponse 역할

  1. HTTP 응답 메시지 생성
  2. 편의 기능 제공

HttpServletResponse - 기본 사용법

hello.servlet.basic.response 패키지를 만들고 ResponseHeaderServlet 클래스를 만듭니다.

Untitled

package hello.servlet.basic.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header")
public class ResponseHeaderServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //[status-line] ...1
        response.setStatus(HttpServletResponse.SC_OK);

        //[response-header] ...2
        response.setHeader("Content-Type", "text/plain;charset=utf-8");
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidation");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("my-header", "hello");

				//...3
        PrintWriter writer = response.getWriter();
        writer.println("안녕하세요.");
    }
}
  1. setStatus

  2. setHeader

    1. header의 데이터를 넣습니다.

      자세히

    2. response.setHeader("Cache-Control", "no-cache, no-store, must-revalidation");

      response.setHeader("Pragma", "no-cache");

      캐시 무효화 자세히

    3. response.setHeader("my-header", "hello");

      • 원하는 임의의 헤더도 만들 수 있습니다.
      • HTTP 응답 헤더에 실려서 나갑니다.
  3. 메시지 바디에 넣기

    //...1
    PrintWriter writer = response.getWriter();
    writer.println("ok");
    
    //...2
    response.getWriter().println("ok");
    
    //...3
    response.getWriter().write("ok");
    

    세 가지 전부 문자를 출력할 때 지원하는 기능입니다. 별 차이는 없습니다.

웹 브라우저에서 응답 데이터를 보면 제대로 받은 것을 알 수 있습니다. 임의로 넣어준 my-header도 들어가 있습니다.

Untitled

이때 인코딩을 웹 브라우저가 임의로 해줬는데 한글이 깨지지 않기 위해선 인코딩 정보도 세팅해주면 됩니다.

그러면 한글을 넣어도 잘 나옵니다.

Untitled