스프링 MVC - 1편 - HTTP 응답 데이터
인프런 스프링 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() 으로 출력하면 그런 문제가 없다.
댓글남기기