HttpServletResponse와 HTTP 응답 데이터
08 Aug 2023스프링 MVC 1편 강의 정리
HttpServletResponse 역할
- HTTP 응답 메세지 생성
- HTTP 응답 코드 지정
- header, body 생성
- 편의 기능 제공
- Content-Type,
- Cookie
- redirect
@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);
// 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");
// custom header
response.setHeader("my-header", "hello");
// header 편의 메서드
content(response);
// cookie 편의 메서드
cookie(response);
// message body
PrintWriter writer = response.getWriter();
writer.println("OK 완료");
}
private void content(HttpServletResponse response) {
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
// response.setContentLength(11); // 생략시, 자동 완성
}
private void cookie(HttpServletResponse response) {
Cookie cookie = new Cookie("myCookie", "good");
cookie.setMaxAge(60);
response.addCookie(cookie);
}
private void redirect(HttpServletResponse response) throws IOException {
// response.setStatus(HttpServletResponse.SC_FOUND);
// response.setHeader("Location", "/basic/hello-form.html");
response.sendRedirect("/basic/hello-form.html");
}
}
HTTP 응답 데이터 - text, HTML
- 단순 텍스트:
writer.println("OK");
- HTML 응답
- HTTP API - message body JSON 응답
- 응답값으로 HTML 반환할 때는 content-type을
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.println("<html>");
writer.println("<body>");
writer.println("<div>Hi!</div>");
writer.println("</body>");
writer.println("</html>");
}
}
HTTP 응답 데이터 - 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 {
// Content-Type: application/json
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
HelloData helloData = new HelloData();
helloData.setUsername("jaejae");
helloData.setAge(34);
String result = objectMapper.writeValueAsString(helloData);
response.getWriter().write(result);
}
}