-
[스프링MVC - 1편] HTTPServletResponse스프링&스프링부트 2025. 1. 5. 12:20
HTTPServletResponse 역할
HTTP 응답 메세지 생성
- HTTP 응답 코드 지정
- 헤더 생성
- 바디 생성
- 편의기능 제공
- Content-Type, 쿠키, Redirect
HTTPServletResponse - 기본 사용법
@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"); } }
@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;charset=utf-8"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Pragma", "no-cache"); response.setHeader("my-header", "hello"); // [Header 편의 메서드] // content(response); // cookie(response); redirect(response); PrintWriter writer = response.getWriter(); writer.println("ok"); } private void content(HttpServletResponse response) { // Content-Type: text/plain;charset=utf-8 // Content-length: 2 // response.setHeader("Content-Type", "text/plain;charset=utf-8"); response.setContentType("text/plain"); response.setCharacterEncoding("utf-8"); // response.setContentLength(2); // (생략시 자동 생성) } private void cookie(HttpServletResponse response) { // Set-Cookie: myCoookie=good; Max-Age=600; // response.setHeader("Set-Cookie", "myCookie=good; Max-Age=600"); Cookie cookie = new Cookie("myCookie", "good"); cookie.setMaxAge(600); // 600초 response.addCookie(cookie); } 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 응답
- HTTP API - MessageBody 응답
HTML 응답
HTTP 응답으로 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>"); } }
API 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("kim"); helloData.setAge(20); // {"username":"kim", "age":20} String result = objectMapper.writeValueAsString(helloData); response.getWriter().write(result); } }
728x90'스프링&스프링부트' 카테고리의 다른 글
[스프링MVC - 1편] JSP 회원관리 웹 애플리케이션 만들기 (0) 2025.01.11 [스프링MVC - 1편] 회원관리 웹 애플리케이션 구현 (0) 2025.01.05 [스프링MVC - 1편] HTTP 요청 데이터 (2) 2025.01.02 [스프링MVC - 1편] HttpServletRequest (0) 2025.01.02 [스프링MVC - 1편] Hello 서블릿 (0) 2024.12.25