[스프링 MVC 1편] - HttpServletResponse

2023. 1. 3. 00:26·Spring

HttpServletResponse

request가 웹브라우저에서 어떠한 정보를 받는것이라면 response는 받은 데이터를 정제하여 웹브라우저로 넘겨줄때 사용한다.

HttpServletResponse 역할

  • HTTP 응답 메시지 생성
  • HTTP 응답코드 지정
  • 헤더 생성
  • 바디 생성

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); //200
    //[response-headers]
    response.setHeader("Content-Type", "text/plain;charset=utf-8");
    response.setHeader("Cache-Control", "no-cache, no-store, mustrevalidate");
    response.setHeader("Pragma", "no-cache");
    response.setHeader("my-header","hello");
    //[Header 편의 메서드]
    content(response);
    cookie(response);
    redirect(response);
    //[message body]
    PrintWriter writer = response.getWriter();
    writer.println("ok");
    }
}

Content 편의 메서드

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

redirect 편의 메서드

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

단순 텍스트

  • getWriter()메서드를 통해 쉽게 가능
PrintWriter writer = response.getWriter();
writer.println("ok");

HTML 응답

  • Content-Type을 text/html로 설정하여 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>");
    }
}

JSON

  • ObjectMapper(jackson라이브러리)를 통해 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.setHeader("content-type", "application/json");
        response.setCharacterEncoding("utf-8");
        HelloData data = new HelloData();
        data.setUsername("kim");
        data.setAge(20);
        //{"username":"kim","age":20}
        String result = objectMapper.writeValueAsString(data);
        response.getWriter().write(result);
    }
}

참고 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

728x90
저작자표시 (새창열림)

'Spring' 카테고리의 다른 글

[spring] @PostConstruct 와 @PreDestroy 어노테이션  (1) 2023.01.05
[스프링 MVC 1편] - 서블릿 HttpServletRequest(http요청데이터)  (0) 2023.01.02
[스프링 MVC 1편] - 서블릿 HttpServletRequest(startLine, header)  (0) 2023.01.02
[스프링 MVC 1편] - 서블릿  (0) 2023.01.02
[스프링 MVC 1편] - 웹 애플리케이션 이해  (1) 2022.12.31
'Spring' 카테고리의 다른 글
  • [spring] @PostConstruct 와 @PreDestroy 어노테이션
  • [스프링 MVC 1편] - 서블릿 HttpServletRequest(http요청데이터)
  • [스프링 MVC 1편] - 서블릿 HttpServletRequest(startLine, header)
  • [스프링 MVC 1편] - 서블릿
study ticket
study ticket
  • study ticket
    혼자하는 공부
    study ticket
  • 전체
    오늘
    어제
    • 개발 (77)
      • 오류 (1)
      • Spring (13)
      • Java (0)
      • Data structure (6)
      • Algorithm (49)
        • 백준 (17)
        • 프로그래머스 (2)
      • 문제풀면서 알게되는것들 끄적 (2)
      • 머신러닝 (4)
        • sklearn (3)
        • pandas (1)
      • 프로젝트 (0)
        • 핏두 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1157
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
study ticket
[스프링 MVC 1편] - HttpServletResponse
상단으로

티스토리툴바