목록Spring/MVC 1 (56)
코드 그라데이션
HTTP 메시지 컨버터 HTTP 메시지 컨버터뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우 HTTP 메시지 컨버터를 사용하면 편리하다. @ResponseBody 사용 원리 [그림] 다시 돌아가서 HTTP 메시지 컨버터 인터페이스 /** * HTTP 요청 및 응답 메시지를 변환하는 데 사용되는 인터페이스입니다. * 이 인터페이스를 구현하는 클래스는 HTTP 요청 메시지를 Java 객체로 변환하거나, * Java 객체를 HTTP 응답 메시지로 변환하는 작업을 수행할 수 있습니다. * * @param 변환할 객체의 타입을 나타내는 제네릭 타입 매개변수 */ public interface HttpMessageConv..
HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. ResponseBodyController @Slf4j @Controller public class ResponseBodyController { // "/response-body-string-v1" 경로로 GET 요청이 들어올 때, // "ok" 문자열을 직접 HTTP 응답 바디에 쓰는 메서드. @GetMapping("/response-body-string-v1") public void responseBodyV1(HttpServletResponse response) throws IOException..
HTTP 응답 - 정적 리소스, 뷰 템플릿 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다 정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사용한다. 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static , /public , /resources , /META-INF/resources src/main/resources 는 리소스를 보관하는 곳 이고, 또 클..
HTTP 요청 메시지 - JSON 이번에는 HTTP API에서 주로 사용하는 JSON 데이터 형식을 조회하기 V1 - 기존 서블릿에서 사용했던 방식 RequestBodyJsonController @Slf4j @Controller public class RequestBodyJsonController { // ObjectMapper 객체를 생성. // ObjectMapper는 JSON 데이터를 자바 객체로 변환하거나 자바 객체를 JSON으로 직렬화하는 데 사용. private ObjectMapper objectMapper = new ObjectMapper(); @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequ..
서블릿에서 학습한 내용 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam , @ModelAttribute 를 사용할 수 없다. (물론 HTML Form 형식으로 전달되는 경우는 요청 파라미터로 인정된다.) 먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어보자. HTTP 메시지 바디의 데이터를 InputStream 을 사용해서 직접 읽을 수 있다. RequestBodyStringController @Slf4j @Controller public class RequestBodyStringController { @PostMapping("/request-body-string-v1") public void requestBody..
HTTP 요청 파라미터 - @ModelAttribute 실제 개발을 하면 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야 한다. 보통 다음과 같이 코드 작성 일단 HelloData 생성 HelloData - 요청 파라미터를 바인딩 받을 객체 @RequestParam String username; @RequestParam int age; HelloData data = new HelloData(); data.setUsername(username); data.setAge(age); @Data @Getter , @Setter , @ToString , @EqualsAndHashCode , @RequiredArgsConstructor 를 자동으로 적용해준다. @ModelAttribute 적용..
RequestParamController 中 requestparamV2 /** * @RequestParam 사용 * - 파라미터 이름으로 바인딩 * @ResponseBody 추가 * - View 조회를 무시하고, HTTP message body에 직접 해당 내용 입력 */ // @RequestParam 어노테이션을 사용하여 파라미터를 바로 메서드 매개변수로 받는 방법. @ResponseBody // 메서드의 반환 값이 HTTP 응답 본문에 직접 쓰여야 함을 나타냄. @RequestMapping("/request-param-v2") public String requestParamV2( @RequestParam("username") String memberName, @RequestParam("age") in..
HTTP 요청 데이터 조회 - 개요. 서블릿에서 학습했던 것을 떠올리면서 이걸 스프링이 얼마나 깔끔하고 효율적으로 바꿔주는지 생각해보면 된다. HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 3가지 방법 요청 파라미터 - 쿼리 파라미터, HTML Form HttpServletRequest 의 request.getParameter() 를 사용하면 다음 두가지 요청 파라미터를 조회할 수 있다. 이제 하나씩 알아보자. 먼저 RequestParamController @Slf4j // Lombok을 사용하여 로깅을 위한 Logger를 자동으로 생성. @Controller . public class RequestParamController { // HttpServletRequest와 HttpSe..
HTTP 요청 - 기본, 헤더 조회 어노테이션 기반의 스프링 컨트롤러는 (정말정말) 다양한 파라미터를 지원한다. 예시를 몇 가지 살펴본다. RequestHeaderController @Slf4j @RestController public class RequestHeaderController { @RequestMapping("/headers") public String headers(HttpServletRequest request, HttpServletRequest response, HttpMethod httpMethod, Locale locale, @RequestHeader MultiValueMap headerMap, @RequestHeader("host") String host, // host 대신에 아..
Locale은 Java 및 기타 프로그래밍 언어에서 지역화와 관련된 정보를 다루기 위한 클래스입니다. 여기서 자세한 설명을 제공하겠습니다. Locale은 두 가지 주요 정보를 저장합니다: 언어 (Language): 언어 코드는 특정 언어를 나타내는 부분입니다. 이것은 언어를 식별하기 위한 약어 또는 코드입니다. 예를 들어, 영어는 "en"으로, 한국어는 "ko"로 표시됩니다. 국가 또는 지역 (Country/Region): 국가 또는 지역 코드는 특정 지역 또는 국가를 식별하는 부분입니다. 이것은 국가 또는 지역을 식별하기 위한 약어 또는 코드입니다. 예를 들어, 미국은 "US"로, 캐나다는 "CA"로 표시됩니다. Locale은 위 두 정보를 결합하여 지역 또는 언어 설정을 정확하게 나타냅니다. 예를 들..