스프링/3. 스프링 MVC

14. HttpServletResponse

sdafdq 2023. 8. 5. 00:19

HTTP 응답 코드 (400 등)

헤더 생성

메시지 바디 생성

 

편의기능

쿠키, Content-type, 리다이렉트 등

 

@WebServlet(name="responseHeaderServlet", urlPatterns = "/response-header")
public class ResponseHeaderServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //start-line
        response.setStatus(HttpServletResponse.SC_OK);

        //header
        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");


        //body
        PrintWriter writer = response.getWriter();
        writer.println("ok");


        //편의메서드
        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");
    }

    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: /basic/hello-form.html

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

SC는 상태코드의 준말. 저거 그냥 response.setStatus(300) 이런 식으로 넣어도 됨.

 

헤더 저런 식으로 "키", "벨류"로 설정 및 생성

그리고 자기 마음데로 임의의 헤더 생성할 수 있음. myHeader

 

바디는 getWriter() 해서. 거기다가 write()나 print() 등등

 

 

편의메서드

response.setContentType(" ") 저런 식으로 가능

response.setCharacterEncoding("utf-8") 이런 식으로 가능.

 

쿠키도 response.setHeader("Set-Cookie", "~~~");

이렇게 말고,

쿠키 생성해서, 그 쿠키에 유효기간 설정하고,

response에 쿠키 추가해 주면 됨.

 

리다이렉트도 쉬움.

굳이 setHeader하고 상태코드 설정 안해도,

response.sendRedirect("경로") 해주면, 상태코드도 알아서 리다이렉트 상태코드인 302로 해주고,

저렇게 리다이렉트 할 Location 추가해 줌.

 

'스프링 > 3. 스프링 MVC' 카테고리의 다른 글

16. HTTP 응답 HTTP API - JSON  (0) 2023.08.05
15. http 응답 방식  (0) 2023.08.05
13. HTTP API JSON  (0) 2023.08.04
12. HTTP API 요청 데이터  (0) 2023.08.04
11. html form, POST 요청 정보.  (0) 2023.08.04