인프런 김영한 님의 스프링 강의이며, 섹션 2 - 서블릿(Servlet)를 정리한다.
실습형 교육으로 자세한 설명이 궁금하면 수강을 권장한다. (실습은 모두 옛날 방식이며, 현재는 좀 더 편하게 사용한다.)
HttpServletResponse - 기본 사용법
HttpServletResponse의 역할
- HTTP 응답 메시지 생성
- 응답 코드 지정 (200, 300, 400, 500 등)
- 바디 생성 가능
- 여러 편의 기능 제공 (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-headers]
response.setHeader("Content-type", "text/plain");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("my-header", "hello");
PrintWriter writer = response.getWriter();
writer.println("ok");
}
}
http://localhost:8080/response-header 이동하고 개발자 도구로 확인해보자.
코드에서 작성한 my-header, Pragma 등이 지정한 값으로 나왔다.
setHeader(key, value)로 지정하는게 너무 반복되어 편의성으로 제공하는 기능들이 존재한다
// 헤더 편의성
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
// 쿠기 편의성
// response.setHeader("Set-Cookie", "myCookie=good; Max-Age=600");
Cookie cookie = new Cookie("myCookie", "good");
cookie.setMaxAge(600); //600초
response.addCookie(cookie);
// redirect 편의성
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");
}
HTTP 응답 데이터 - 단순 텍스트, HTML
* 이전까지 단순 텍스트는 진행해온 관계로 생략한다.
HTML 응답
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>안녕하세요?</div>");
writer.println("</body>");
writer.println("</html>");
}
}
실행하고 페이지 소스보기를 사용하자
HTTP 응답 데이터 - API JSON
JSON 응답
JSON을 반환할 때는 content-type을 application/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;charset=utf-8
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
HelloData helloData = new HelloData();
helloData.setAge(20);
helloData.setUsername("loop-study");
// {"username":"loop-study", "age":20}
String result = objectMapper.writeValueAsString(helloData);
response.getWriter().write(result);
}
}
'교육 및 인강 > 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 카테고리의 다른 글
MVC 패턴 - 개요, 적용, 한계 (0) | 2021.06.29 |
---|---|
서블릿, JSP - 회원 관리 요구사항, 서블릿으로 만들기, JSP로 만들기 (0) | 2021.06.29 |
서블릿(Servlet) - API 메시지 바디 : 단순 텍스트, JSON (0) | 2021.06.28 |
서블릿(Servlet) - HTTP 요청 데이터 : 개요, GET 쿼리 파라미터, POST HTML Form (0) | 2021.06.27 |
서블릿(Servlet) - 서블릿 환경 구성, HttpServletRequest 개요와 기본 사용법 (0) | 2021.06.25 |