ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스프링MVC - 1편] HTTPServletResponse
    스프링&스프링부트 2025. 1. 5. 12:20
    HTTPServletResponse 역할

    HTTP 응답 메세지 생성

    • HTTP 응답 코드 지정
    • 헤더 생성
    • 바디 생성
    • 편의기능 제공
      • Content-Type, 쿠키, Redirect

     

     

    HTTPServletResponse - 기본 사용법

    @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");
            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.println("ok");
        }
    }

     

     

    @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);
    
            PrintWriter writer = response.getWriter();
            writer.println("ok");
        }
    
        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: myCoookie=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);
        }
    
        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 응답 데이터
    • 단순 텍스트 응답
    • HTML 응답
    • HTTP API - MessageBody 응답

     

     

    HTML 응답

    HTTP 응답으로 HTML을 반환할 때는 content-type을 text/html으로 지정해야 한다

    @WebServlet(name = "responseHtmlServlet", urlPatterns = "/response-html")
    public class ResponseHtmlServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // Content-Type : text/html;charset=utf-8
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
    
            PrintWriter writer = response.getWriter();
            writer.println("<html>");
            writer.println("<body>");
            writer.println("    <div>안녕?</div>");
            writer.println("</body>");
            writer.println("</html>");
        }
    }

     

     

    API JSON 응답

    @WebServlet(name = "responseJsonServlet", urlPatterns = "/response-json")
    public class ResponseJsonServlet extends HttpServlet {
    
        private ObjectMapper objectMapper = new ObjectMapper();
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // Content-type: application/json
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
    
            HelloData helloData = new HelloData();
            helloData.setUsername("kim");
            helloData.setAge(20);
    
            // {"username":"kim", "age":20}
            String result = objectMapper.writeValueAsString(helloData);
            response.getWriter().write(result);
        }
    }

     

     

     

     

     

    728x90
Designed by Tistory.