HttpServletResponse의 정의

Servlet에서 HTTP 서버가 클라이언트에게 응답을 보내는 데 사용되는 객체

HTTP 응답 상태 코드를 설정하고, 응답 헤더를 추가하거나 수정하며, 클라이언트로 보낼 데이터를 쓸 수 있습니다.

HTTP 응답 설정

1. 상태 코드 설정

response.setStatus(HttpServletResponse.SC_OK); // 정상 상태코드(200)을 설정

2. 헤더 직접 설정

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");

3. Content 편의 설정

response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");

4. 쿠키 편의 설정

Cookie cookie = new Cookie("myCookie", "good");
cookie.setMaxAge(600); //600초
 
response.addCookie(cookie);

5. redirect 편의 설정

response.sendRedirect("/hello.html");

데이터 응답

1. HTML 직접 응답

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>");

2. JSON 응답

// 우선 해당 JSON 형태에 맞게 데이터 클래스를 생성
 
@Getter @Setter
 public class JsonData {
     private String username;
     private int age;
}
response.setHeader("content-type", "application/json");
response.setCharacterEncoding("utf-8");
 
JsonData data = new JsonData();
data.setUsername("kim");
data.setAge(20);
 
//{"username":"kim","age":20}
String result = objectMapper.writeValueAsString(data);
 
response.getWriter().write(result);