1 분 소요

인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술편을 학습하고 정리한 내용 입니다.

HTTP 응답 데이터 - 단순 텍스트, HTML

HTTP 응답 메시지는 주로 다음 내용을 담아서 전달한다.

  • 단순 텍스트 응답
    • 앞에서 살펴봄(writer.println("ok"))
  • HTML 응답
  • HTTP API - MessageBody JSON 응답

hello/servlet/basic/response/ResponseHtmlServlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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>");  
  
    }  
}

간단한 클래스다.

HTTP 응답으로 HTML을 반환할 때는 content-type을 text/html로 지정해야 한다.

다음과 같이 잘 나온다..

HTTP 응답 데이터 - API JSON

이번엔 응답을 JSON으로 보내보자. hello.servlet.basic.response.ResponseJsonServlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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.setContentType("application/json");  
        response.setCharacterEncoding("utf-8");  
  
        HelloData helloData = new HelloData();  
        helloData.setUsername("kim");  
        helloData.setAge(20);  
  
        String result = objectMapper.writeValueAsString(helloData);  
        response.getWriter().write(result);  
    }  
}

사실 JSON 자체도 그냥 문자열 이기 때문에 뭐 어렵진 않다.

1
private ObjectMapper objectMapper = new ObjectMapper();

지금은 스프링이 아니라 순수 자바기 때문에 objectMapper.writeValueAsString()

사용해서 JSON 데이터 만들고 response에 실어서 보내면 된다.

잘 나왔다.

참고 application/json 은 스펙상 utf-8 형식을 사용하도록 정의되어 있다. 그래서 스펙에서 charset=utf-8 과 같은 추가 파라미터를 지원하지 않는다. 따라서 application/json 이라고만 사용해야지 application/json;charset=utf-8이라고 전달하는 것은 의미 없는 파라미터를 추가한 것이 된다. response.getWriter()를 사용하면 추가 파라미터를 자동으로 추가 해버린다. 이때는 response.getOutputStream() 으로 출력하면 그런 문제가 없다.

댓글남기기