본문 바로가기

[Spring] HttpServletResponse와 제공 메서드

@xuv22025. 6. 21. 14:31

HttpServletResponse의 역할

기능을 알아보기 전에, 해당 객체가 어떤 역할을 하는지부터 알아야한다.

- HTTP 응답 메시지 생성 -> 응답 코드, 헤더, 바디 생성

- 편의 기능 제공 -> Cookie 나 Redirection


HttpServletResponse 가 제공하는 기능

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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]
        response.setStatus(HttpServletResponse.SC_OK);

        //[response-headers]
        response.setHeader("Content-Type", "text/plain;charset=utf-8");
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 캐시 무효화
        response.setHeader("Pragma", "no-cache"); // 과거 캐시 무효화
        response.setHeader("my-header", "hello");

        // [Header 편의 메서드]
        content(response);
        cookie(response);
        //redirect(response); -> 302 리다이렉트

        // [message body]
        PrintWriter writer = response.getWriter();
        writer.println("OK");


    }

    private void content(HttpServletResponse response) {
        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);
        response.addCookie(cookie);
    }

    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");

    }
}

참고로 리다이렉션 코드는 주석으로 설정해두었다.

HTTP 응답 메시지의 형태를 생각해보면 크게 어려운 내용은 없다. 단순하게 응답 메시지를 어떻게 만드는지만 잘 작성하면 된다.

마지막 body에 writer로 웹 페이지에 단순 텍스트 응답을 작성할 수도 있다.

xuv2
@xuv2 :: xuvlog

폭싹 늙었수다

목차