HttpServletResponse - 기본 사용법
HttpServletResponese 역할
" Http 응답 메시지 생성"
- Http 응답코드 지정
- 헤더생성
- 바디생성
"편의 기능 제공"
- Content-type , 쿠키, Redirect
ResponseHeaderServlet
응답의 헤더에 들어가는 값 관련해서 확인
Cookie 객체를 통해서 myCookie 를 설정할 수 있다.
@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);
// [Header-line]
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);
// [Messaage Body]
PrintWriter writer = response.getWriter();
writer.println("ok");
}
private void content(HttpServletResponse response){
// Content-Type : text/plain; charset=utf-8
// Content-Length : 2
response.setContentType("text/plain;charset=utf-8");
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")
Cookie cookie = new Cookie("myCookie", "good");
cookie.setMaxAge(600);
response.addCookie(cookie);
}
private void redirect(HttpServletResponse response) throws IOException {
// Status 302
// location : /basic/hello-form.html
//response.setStatus(HttpServletResponse.SC_OK);
//response.setHeader("Location", "/basic/hello/form.html");
response.sendRedirect("/basic/hello-form.html");
}
}
HTTP 응답데이터 - 단순 텍스트, HTML
HTTP 응답 메시지는 주로 다음 내용을 전달
: 단순 텍스트 응답 - > PrintWriter
: HTML 응답
: HTML API - Message Body 응답
ResponseHtmlServlet
: Content Type - "text/html" 로 지정함
: PrintWriter 로 HTML 문법을 작성하게 되면, 응답 결과로 HTML로 리턴되면서
작성한 HTML 구문이 보인다.
package hello.servlet.basic.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "ResponseHtmlServlet", urlPatterns = "/response-html")
public class ResponseHtmlServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<body>");
writer.println("<div> HTML 테스트 </div>");
writer.println("</body>");
writer.println("</html>");
}
}
JSON
HTTP 응답으로 JSON 시 application/json 으로 지정
* application/json 은 UTF-8이 기본으로 되어 있어서 별도로 지정 필요 없음
import com.fasterxml.jackson.databind.ObjectMapper;
import hello.servlet.basic.HelloData;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@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 {
// Content type : application/json
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
HelloData helloData = new HelloData();
helloData.setUsername("kim");
helloData.setAge(20);
String result = objectMapper.writeValueAsString(helloData);
response.getWriter().write(result);
}
}
서블릿 정리
1. 서블릿 프로젝트 생성
2. Hello 서블릿 생성
3. HttpServletRequest
: Header, 요청을 편리하게 생성
4. Http 요청데이터
: 주로 3가지 GET(쿼리파라미터), POST - HTML Form , HTTP message body(JSON, TEXT, XML 등)
: request.getParameter 를 통해 GET, POST 파라미터 값을 읽을 수 있음.
: HTTP MESSAGE BODY 의 경우, 주로 JSON을 사용
5. HttpServletResponse
'프로그래밍' 카테고리의 다른 글
[오류] javax.net.ssl.SSLHandshakeException : Received fatal alert : handshake_failure (0) | 2023.06.14 |
---|---|
[Spring] Spring Boot로 블로그 만들어보기(타임리프) - (1) (0) | 2023.06.13 |
[Spring] 국세청_사업자등록정보 진위확인 및 상태조회 서비스 (WebClient) (0) | 2023.05.22 |
[SpringBoot] 1. Oauth 2.0 기반 소셜 로그인 구현해보기 (1) | 2023.05.19 |
[Spring] 스프링 MVC 1편 백엔드 웹 개발 핵심 (2) (0) | 2023.04.24 |