Back-End/Spring
[Spring MVC] 서블릿 - HTTP 응답 데이터
달의 조각
2022. 4. 19. 11:43
이 글은 김영한 님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 수강하며 정리한 글입니다.
단순 텍스트 응답
writer.println("ok");
HTML 응답
📄 ResponseHtmlServlet
HTTP 응답으로 HTML을 반환할 때는 content-type을 text/html 로 지정해야 한다.
//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 API
메시지 바디 JSON
📄 ResponseJsonServlet
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("jang");
helloData.setAge(22);
//{"username":"jang", "age":22}
String result = objectMapper.writeValueAsString(helloData);
response.getWriter().write(result);
application/json은 utf-8 형식을 사용하도록 정의되어 있다. 그래서 추가 파라미터를 지원하지 않는다.
application/json;charset=utf-8으로 전달하는 것은 의미 없는 파라미터를 추가한 것이 된다.
response.getWriter()를 사용하면 추가 파라미터를 자동으로 추가하는데,
이때는 response.getOutputStream()으로 출력하면 그런 문제가 없다.