Back-End/Spring

[Spring MVC] 서블릿 - HttpServletResponse

HMHA 2023. 2. 9. 14:06
300x250
반응형

HttpServletResponse

서블릿은 응답에 대해 HttpServletResponse를 통해 다음과 같은 기능을 제공합니다.

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

 

또한 Content-Type, 쿠키, Redirect를 편하게 사용할 수 있게 해주는 기능을 제공해줍니다.

 

헤더 설정

HttpServletResponse.setHeader()

@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 - 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");  // 임의의 헤더 생성하기
    }
}

 

편의 메서드 사용

@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 - HEADER 설정
        response.setContentType("test/plain");
        response.setCharacterEncoding("utf-8");
    }
}

 

쿠키 설정

HttpServletResponse.addCookie(cookie)

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("", "good");
    cookie.setMaxAge(600);
    response.addCookie(cookie);
}

 

리다이렉트(Redirect) 설정

HttpServletResponse.sendRedirect(url)

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

 

Content 설정 (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.write("<html>");
        writer.write("<body>");
        writer.write("<div> 안녕? </div>");
        writer.write("</body>");
        writer.write("</html>");
    }
}

 

Content 설정 (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 {
        // response.setHeader("content-type", "application/json");
        // response.setCharacterEncoding("utf-8");  json은 무조건 utf-8이기 때문에 추가하지 않아도 된다.
        HelloData data = new HelloData();
        data.setUsername("kim");
        data.setAge(20);  // {"username":"kim","age":20}

        String result = objectMapper.writeValueAsString(data);
        response.getOutputStream().print(result);
    }

    @Getter
    @Setter
    private static class HelloData {
        private String username;
        private int age;
    }
}

 

Reference

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

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

 

출처 : https://ttl-blog.tistory.com/234

 

[MVC] 서블릿 - HttpServletResponse

🧐 HttpServletResponse 서블릿은 응답에 대해 HttpServletResponse를 통해 다음과 같은 기능을 제공합니다. HTTP 응답 메시지 생성 HTTP 응답코드 지정 헤더 생성 바디 생성 또한 Content-Type, 쿠키, Redirect를 편

ttl-blog.tistory.com

 

300x250
반응형