쌓고 쌓다

HTTP 응답 데이터 본문

프로그래밍/JSP & Servlet

HTTP 응답 데이터

승민아 2023. 7. 22. 14:49

Response 구조

HTTP/1.1 200 OK status line
Date: Sun, 2 June
Server: Apache
Content-Length: 1
Content-Type: text/html
headers
  blank line
<h1>hello</h1> body

 

HTTP 응답 메시지 생성

1. HTTP 응답 코드 지정

// [status-line]
response.setStatus(HttpServletResponse.SC_OK);

SC_OK는 200으로 매핑되어 있어

메소드 호출시 200을 넣어줘도 동일하다.

 

2. 헤더 생성

//[response-headers]
response.setHeader("Content-Type", "text/plain;charset=utf-8");
response.setHeader("Cache-Control", "no-cache, no-store, mustrevalidate");
response.setHeader("Pragma", "no-cache");


// 임의의 헤더 작성
response.setHeader("my-header","hello");

임의의 헤더로 키와 값을 넣을 수 있다.

 

3. 편의 메서드

3.1 Content

response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
//response.setContentLength(2); //(생략시 자동 생성)

 

3.2 쿠키

private void cookie(HttpServletResponse response) {
 Cookie cookie = new Cookie("myCookie", "good");
 cookie.setMaxAge(600); // 600초
 response.addCookie(cookie);
}

 

위와 같이 편의 메서드를 제공하지만 아래와 같이 작성도 가능하다.

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

 

3.3 리다이렉션

response.sendRedirect("/basic/hello-form.html");



편의 메서드 미사용

//Status Code 302
//Location: /basic/hello-form.html
//response.setStatus(HttpServletResponse.SC_FOUND); //302
//response.setHeader("Location", "/basic/hello-form.html");

 

HTTP 응답 데이터

1. 단순 텍스트 응답

// [message body]
PrintWriter writer = response.getWriter();
writer.println("ok");

응답

 

2. HTML 응답

//Content-type: text/html; charset=utf-8
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>");

응답

 

3. HTML API - MessageBody JSON

@WebServlet(name="responseJsonServlet", urlPatterns = "/response-json")
public class ResponseJsonServlet extends HttpServlet {

    private ObjectMapper objectMapper = new ObjectMapper();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");

        HelloData helloData = new HelloData();
        helloData.setUsername("LSM");
        helloData.setAge(100);

        //helloData를 JSON 형태로 바꾸는 과정이 필요하다. ObjectMapper 필요. { "username":"LSM", "age":100 }
        String result = objectMapper.writeValueAsString(helloData);//객체를 가지고 값을 써서 문자로 바꿔라라는 뜻의 메서드

        response.getWriter().write(result);
    }
}

 

HelloData를 JSON 형태로 바꾸는 과정이 필요하다.

이때 ObjectMapper를 통해 객체를 JSON 문자열로 바꾸는 과정이 필요하다.

String result = objectMapper.writeValueAsString(helloData);

 

 

'프로그래밍 > JSP & Servlet' 카테고리의 다른 글

서블릿, JSP로 MVC 패턴 만들기  (0) 2023.07.29
JSP 애플리케이션과 MVC 패턴  (0) 2023.07.25
서블릿 애플리케이션과 템플릿 엔진  (0) 2023.07.24
HTTP 요청 데이터  (0) 2023.07.20
서블릿  (0) 2023.07.19
Comments