본문 바로가기
Learning-log/Spring & JPA

(스프링MVC1편-백엔드 웹 개발 핵심 기술) 2-(9) HttpServletResponse 기본 사용법, (10) HTTP응답 데이터 - 단순 텍스트, HTML

by why제곱 2023. 5. 8.

- HttpServletResponse 기본 사용법 

  • HTTP 응답 메시지 생성하는 역할
  • 헤더 생성
  • 바디 생성
  • 편의 기능제공 : ContentType 헤더를 편리하게 지정, 쿠키 편리하게 생성, Redirect
  •  
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]
        response.setStatus(HttpServletResponse.SC_OK);

        //[response-headers]
//        response.setHeader("Content-Type", "text/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.println("ok");
    }
//아래 두 문장이 위의 setHeader를 대신해줌
    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.setContentTypeLength(2); //생략 시 자동 생성

        //
    }
}

 

  • 쿠키 : 쿠키 객체를 만들어서 response.addCookie 하면 가능
    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("my-Cookie", "good");
        cookie.setMaxAge(600);
        response.addCookie(cookie);
    }
  • redirect를 위한 편의 메서드
    private void redirect(HttpServletResponse response){
        //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

  • 단순 텍스트, HTML, HTTP API로 응답
  • 이 중 HTML을 살펴볼 예정
  • 코드
@WebServlet(name = "responseHtmlServlet", urlPatterns = "/response-html")
public class ResponseHtmlServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");

        PrintWriter writer = resp.getWriter();
        writer.println("<html>");
        writer.println("<body>>");
        writer.println("<div>ㅎㅇ </div>");
        writer.println("</body>");
        writer.println("</html>");
    }