[spring] HttpServletResponse

공수정·2022년 5월 8일
0

spring

목록 보기
20/32
post-custom-banner

HttpServletResponse


HTTP 응답 메세지

역할

  • HTTP 응답메세지 작성: HTTP 응답코드, 헤더, 바디
  • 편의기능 제공: Content-Type, 쿠키, Redirect
응답코드의미
100번대정보, 서버가 요청을 받았고, 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미
200번대성공, 요청을 성공적으로 받았으며 인식했고 수용했다는 의미
300번대리다이렉션, 요청 완료를 위해 추가 작업 조치가 필요
400번대클라이언트 오류, 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
500번대서버 오류, 서버가 명백히 유효한 요청에 대한 충족을 실패

기본 사용법

START-LINE

response.setStatus(HttpServletResponse.SC_OK); //HTTP 응답코드

HttpServletResponse.SC_OK 대신에 200으로 해도 같은 의미
하지만 HttpServletResponse.SC_OK이 보기에 의미전달이 조금 더 직관적

기본 사용법

response.setHeader("헤더이름","넣을 값");
response.setHeader("Content-type","text/plain");
response.setHeader("Pragma","no-cache");

content 편의 메서드

response.setHeader("Content-type","text/plain");

response.setContentType("text/plain");
메서드 이름설명
setContentTypecontent 타입 지정, text/plain, application/json 등이 있음
setCharacterEncodingcharset설정
setContentLengthcontent 길이, 설정하지 않으면 WAS가 자동으로 생성

쿠키 편의 메서드

response.setHeader("Set-Cookie","myCookie=good;Max-Age=600");

Cookie cookie = new Cookie("myCookie", "good");
cookie.setMaxAge(600);//600초
response.addCookie(cookie);
메서드 이름설명
addCookie쿠키 추가
setMaxAge쿠키 시간 설정

redirect 편의 메서드

response.setStatus(HttpServletResponse.SC_FOUND);// HTTP 상태코드 302
response.setHeader("Location", "/basic/hello-form.html");

response.sendRedirect("/basic/hello-form.html");
메서드 이름설명
sendRedirectredirect할 url 설정

BODY

단순 텍스트

PrintWriter writer = response.getWriter(); // writer 생성 후
writer.println("ok");	//원하는 텍스트

HTML

response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");

PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<body>");
writer.println("<div>이건 html 파일 입니다. </div>");
writer.println("</body>");
writer.println("</html>");

Content-Typetext/html로 정의하고 PrintWriter로 html 작성

API JSON

response.setContentType("application/json");

HelloData helloData = new HelloData();
helloData.setAge(25);
helloData.setUsername("SuJeong Gong");

//json스트링으로 변환
private ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(helloData);

response.getWriter().write(json);

Content-Typeapplication/json로 정의하고 ObjectMapper을 통해서 json string으로 변환

application/json은 utf-8 형식을 사용하라고 정의 되어있기 때문에 charset을 설정하지 않아도 됨
근데 response.getWriter()를 사용하면 charset을 지정하는 파라미터를 자동으로 추가함
-> response.getOutputStream()을 사용해서 출력하면 해당 문제는 사라짐

출처
1. 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
2. HTTP 상태 코드 정리

profile
계속해서 공부하는 개발자입니다 :)
post-custom-banner

0개의 댓글