Spring/mvc

[Spring MVC 1] - HttpServletResponse

dev_rosieposie 2022. 8. 9. 00:01

HttpServletResponse 역할

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

직접  헤더 정보 출력해보기

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

        response.getWriter().write("ok");

    }
}

servlet-basic패키지에 response 패키지를 생성하고 위와 같이 ResponseHeaderServlet을 생성한다.

서블릿 클래스 만들기 이전 포스팅 참고 : https://dev-rosiepoise.tistory.com/10 

 

  • my-header 같은 임의의 정보도 세팅할 수 있음

결과

 

직접  헤더 편의 메서드 - content 정보 출력해보기

// protected void service 메서드에 다음 메서드 추가
//[Header 편의 메서드]
content(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); 생략시 자동 생성
}
  • setContentLength를 지정해줄 수 있지만 하지 않으면 자동 생성
  • setHeader에 직접 세팅해도 되지만 setContentType, setCharacterEncoding에 세팅해줘도 됨

결과

앗 힝구리퐁퐁이 나온 이유는 protected void service 메서드에 

response.getWriter().write("힝구리퐁퐁");

로 수정을 해주었기 때문..히히 ^ㅇ^

ㅋㅋㅋㅋㅋㅋㅋㅋ

 

직접  헤더 편의 메서드 - cookie 정보 출력해보기

// protected void service 메서드에 다음 메서드 추가
//[Header 편의 메서드]
cookie(response);

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);
}
  • setHeader를 통해 Set-Cookie 정보를 세팅해줘도 되지만 객체를 생성해서 addCookie해도 됨. 더욱 간편

결과 

위와 같이 Set-Cookie정보를 확인할 수 있음

 

직접  헤더 편의 메서드 - redirect 정보 출력해보기

// protected void service 메서드에 다음 메서드 추가
//[Header 편의 메서드]
redirect(response);

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");
}
  • setHeader, setStatus를 사용해도 되지만 sendRedirect를 사용하는 것이 더욱 편리!

결과 

 

 

 

 

@ 스프링 MVC 1편 - 백엔드 웹개발 by 김영한을 참조하고 있습니다.