hello.servlet.basic.response 패키지를 만들고 ResponseHeaderServlet 클래스를 만듭니다.
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("안녕하세요.");
}
}
setStatus
status-line에 상태코드를 넣습니다.
→ 자세히
기본은 200입니다.
response.setStatus(200);
그런데 response.setStatus(HttpServletResponse.SC_OK);
식으로 적는게 더 낫습니다.
200을 직접 적으면 매직 넘버가 되는데 그것 보다 HttpServletResponse.SC_OK로 적게 되면 의미 있는 숫자가 되기 때문입니다.
setHeader
header의 데이터를 넣습니다.
→ 자세히
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidation");
response.setHeader("Pragma", "no-cache");
response.setHeader("my-header", "hello");
메시지 바디에 넣기
//...1
PrintWriter writer = response.getWriter();
writer.println("ok");
//...2
response.getWriter().println("ok");
//...3
response.getWriter().write("ok");
세 가지 전부 문자를 출력할 때 지원하는 기능입니다. 별 차이는 없습니다.
웹 브라우저에서 응답 데이터를 보면 제대로 받은 것을 알 수 있습니다. 임의로 넣어준 my-header도 들어가 있습니다.
이때 인코딩을 웹 브라우저가 임의로 해줬는데 한글이 깨지지 않기 위해선 인코딩 정보도 세팅해주면 됩니다.
그러면 한글을 넣어도 잘 나옵니다.