HttpServletResponse 역할
- HTTP 응답 메세지를 생성한다
- HTTP 응답코드 지정
- 헤더 생성
- 바디 생성
- 편의기능 제공
- Content-Type, 쿠키, 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");
response.getWriter().write("ok");
}
}
servlet-basic패키지에 response 패키지를 생성하고 위와 같이 ResponseHeaderServlet을 생성한다.
서블릿 클래스 만들기 이전 포스팅 참고 : https://dev-rosiepoise.tistory.com/10
- my-header 같은 임의의 정보도 세팅할 수 있음
결과
직접 헤더 편의 메서드 - content 정보 출력해보기
// protected void service 메서드에 다음 메서드 추가
//[Header 편의 메서드]
content(response);
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); 생략시 자동 생성
}
- setContentLength를 지정해줄 수 있지만 하지 않으면 자동 생성
- setHeader에 직접 세팅해도 되지만 setContentType, setCharacterEncoding에 세팅해줘도 됨
결과
앗 힝구리퐁퐁이 나온 이유는 protected void service 메서드에
response.getWriter().write("힝구리퐁퐁");
로 수정을 해주었기 때문..히히 ^ㅇ^
ㅋㅋㅋㅋㅋㅋㅋㅋ
직접 헤더 편의 메서드 - cookie 정보 출력해보기
// protected void service 메서드에 다음 메서드 추가
//[Header 편의 메서드]
cookie(response);
private void cookie(HttpServletResponse response) {
// Set-Cookie: myCookie=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);
}
- setHeader를 통해 Set-Cookie 정보를 세팅해줘도 되지만 객체를 생성해서 addCookie해도 됨. 더욱 간편
결과
위와 같이 Set-Cookie정보를 확인할 수 있음
직접 헤더 편의 메서드 - redirect 정보 출력해보기
// protected void service 메서드에 다음 메서드 추가
//[Header 편의 메서드]
redirect(response);
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");
}
- setHeader, setStatus를 사용해도 되지만 sendRedirect를 사용하는 것이 더욱 편리!
결과
@ 스프링 MVC 1편 - 백엔드 웹개발 by 김영한을 참조하고 있습니다.
'Spring > mvc' 카테고리의 다른 글
[Spring MVC 1] - 회원 관리 웹 어플리케이션 Servlet으로 구현 (0) | 2022.08.11 |
---|---|
[Spring MVC 1] - HTTP 응답 데이터 (0) | 2022.08.09 |
[Spring MVC 1] - HTTP 요청 데이터 (0) | 2022.08.07 |
[Spring MVC 1] - HttpServletRequest (0) | 2022.08.01 |
[Spring MVC 1] - 스프링부트 환경에서 서블릿 등록 후 사용 (0) | 2022.07.30 |