HttpServletResponse

jmjmjames·2022년 5월 26일
0

본 포스팅은 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 보고 정리한 내용입니다.


HTTP 응답 메시지 생성

  • HTTP 응답 코드 지정
  • 헤더 생성
  • 바디 생성

편의 기능 제공

  • contnet-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); //200
        
        //[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);
        
        //[message body]
        PrintWriter writer = response.getWriter();
        writer.println("ok");
 
 	} 

} 

Content 편의 메서드

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: 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);
}

redirect 편의 메서드

private void redirect(HttpServletResponse response) throws IOException {
	
    //Location: /basic/hello-form.html
    //response.setStatus(HttpServletResponse.SC_FOUND); //302
    
    //response.setHeader("Location", "/basic/hello-form.html");
    response.sendRedirect("/basic/hello-form.html");
}

application/json 은 스펙상 utf-8 형식을 사용하도록 정의되어 있다. 따라서 application/json 이라고만 사용해야한다. application/json;charset=utf-8 이라고 전달하는 것은 의미 없는 파라미터를 추가한 것이 된다.

profile
Backend Developer

0개의 댓글