쌓고 쌓다
HTTP 응답 데이터 본문
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