스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 6

Spring 정리 2021. 9. 30. 13:24

인프런 강의 24일차.

 - 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 1 (김영한 강사님)

 - HttpServletResponse

 

1. HttpServletResponse의 역할

 - HTTP 응답 메시지 생성

   : HTTP 응답 코드 지정

   : 헤더 생성

   : 바디 생성

 - 편의 기능 제공

   : Content-type

   : 쿠키

   : Redirect

 

2. HttpServletResponse 기본 사용법

package hello.servlet.basic.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
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]
        response.setStatus(HttpServletResponse.SC_OK);  //response.setStatus(200); SC_OK는 200의 값을 의미함. 200 하드코딩 보다 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");   //사용자 임의 헤더 정의도 가능

        PrintWriter writer = response.getWriter();
        writer.print("안녕하세요");

        //[Header 편의 메소드]
        content(response);  //컨텐츠 세팅
        cookie(response);   //쿠키 세팅
        redirect(response); //라다이렉션 세팅

    }

    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);
        response.addCookie(cookie);
    }

    private void redirect(HttpServletResponse response) throws IOException {
        //Status Code 302로 세팅 후 Location으로 리다이렉트하는 메소드
        //Location : /basic/hello-form.html

        response.setStatus(HttpServletResponse.SC_FOUND);   //302
        response.setHeader("Location", "/basic/hello-form.html");
//        response.sendRedirect("/basic/hello-form.html");
    }

}

 - content, cookie, redirect 세팅 방법