HttpServletResponse 기본 사용법
HttpServletResponse 역할
- HTTP 응답 메세지 생성
- HTTP 응답코드 지정
- 헤더 생성
- 바디 생성 - 편의 기능 제공
- Content-Type, 쿠키, Redirect
response의 값들을 지정한 뒤 네트워크에서 제대로 값이 들어갔는지 확인해보자
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// [status-line]
resp.setStatus(HttpServletResponse.SC_OK); // 200
// [response-header]
resp.setHeader("Content-Type","text/plain; charset=utf-8");
resp.setHeader("Cache-control", "no-cache, no-store, must-revalidate");
resp.setHeader("Pragma","no-cache");
resp.setHeader("my-header","hello");
resp.getWriter().write("오케이");
}
위의 코드는 응답메세지 header부분에 값들을 지정한 모습이다. 가장 위의 잇는 코드는 응답코드인데 200은 정상작동을 의미한다. 아래에서 부터는 모두 setHeader인 모습인데 실행화면을 켜본뒤 값들이 모두 제대로 들어갔는지 확인해보자.
지정한 header들이 모두 제대로 들어간 모습을 확인할 수 있다.
위의 방식 말고도 다른 방식으로도 지정을 할 수있다.
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// [status-line]
resp.setStatus(HttpServletResponse.SC_OK); // 200
// [response-header]
//resp.setHeader("Content-Type","text/plain; charset=utf-8");
resp.setHeader("Cache-control", "no-cache, no-store, must-revalidate");
resp.setHeader("Pragma","no-cache");
resp.setHeader("my-header","hello");
content(resp);
resp.getWriter().write("오케이");
}
private void content(HttpServletResponse response) {
//Content-Length: 2
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
//response.setContentLength(2); //(생략시 자동 생성)
}
위의 코드를 보게되면 content-Type을 주석처리 하고 다른 메소드를 불러와 reponse.setContentType과 setCharactorEncoding으로 지정한 모습을 볼 수있는데 결과는 같게 나온다. 위의 두가지 방식 모두 사용가능하다.
다음의 편의 기능은 쿠키와 관련된 편의 기능이 있다.
//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);
이처럼 쿠키를 넣는 방식도 몇가지가 있는데 주석처리 되지않는 방식이 가장 간편하고 많이 사용된다. 결과 값을 봐보자
쿠키도 응답 header에 잘 들어간 모습이다.
마지막으로 Redirect를 알아보자
//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");
Redirect는 페이지가 응답을 하면 지정한 장소로 이동하게 만드는 방법이다. 위의 url은 /response-header지만 실행을 하게 되면 hello-form.html화면이 열리게 된다. 그리고 네트워크 쪽을 보게 되면 알 수 있다.
이처럼 response-header가 열리고 hello-form이 열린게 확인되며 response-header의 response header를 보게 되면 location이 hello-form을 향한 것을 볼 수 있다.