사용자는 브라우저에 상품 등록 폼에서 값을 입력하고 POST 요청을 보낸다.컨트롤러는 그 값을 받아 객체에 저장하고, 결과 화면을 보여주거나 상세 페이지로 이동한다.content-type : application/x-www-form-urlencoded메시지 바디에 쿼리 파라미터 형식으로 전잘된다. 예) usernamewow&age=100 @RequestParam @RequestParam를 사용해서 하나씩 받아 수동으로 객체에 넣는다.파라미터가 길어지면 코드도 길어지고 매번 set 해줘야하는 번거로움이 있다. @PostMapping("/add") public String addItemV1(@RequestParam String itemName, ..
🖥️ Back
뷰를 거치지 않고, 데이터를 직접 주고 받을 때 스프링이 HttpMessageConverter를 이용해서자바 객체 ↔ 문자열, JSON으로 자동 변환해준다. @ResponseBody가 있으면 뷰 템플릿을 찾지 않고 (viewResolver 비활성화)HttpMessageConverter가 동작해서 응답 바디에 직접 데이터를 넣어준다.기본 문자 처리는 StringHttpMessageConverter기본 객체 처리는 MappingJackson2HttpMessageConverter바이트(이밎, 파일 등) 처리는 ByteArrayHttpMessageConverter@ResponseBody@GetMapping("/hello")public String hello() { return "hello";} HTTP 요..
앞선 내용은 HTML 화면인데 이번 글은 JSON 같은 데이터를 응답으로 보낼 것이다. 이 코드는 스프링 없고 순수 자바 서블릿 방식으로 HttpServletResponse 객체를 통해서 HTTP 메시지 바디에 메시지 응답을 전달한다. @GetMapping("/response-body-string-v1") public void responseBodyV1(HttpServletResponse response) throws IOException { response.getWriter().write("ok"); } ResponseEntity는 HttpEntity를 상속받았다.HTTP 메시지의 응답 바디, 상태 코드를 함께 설정할 수 있다.그래서 API 응답에 적절한 HTTP 상태 코..
클라이언트 요청에 대한 서버(스프링)의 응답 데이터 제공하는 방법은 3가지이다.1. 웹 브라우저에 정적인 HTML, CSS, JS를 제공할 때는 정적 리소스를 사용2. 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿 사용3. HTTP API를 제공하는 경우에는 HTML이 아닌 데이터를 전달하기 때문에, HTTP 메시지 바디에 JSON 형식으로 데이터 사용 정적 리소스쉽게 생각해 서버에서 그대로 파일을 보내는 것이다. 그래서 읽기만 하고 서버에서 내용을 바꾸지도 않음예를 들면 HTML 파일, 이미지, CSS, JS 파일이 있다.이러한 파일들은 스프링 부트는 기본적으로 아래 폴더들을 자동으로 찾아서 정적 리소스를 제공한다.src/main/resources/staticsrc/main/resources..
요청 파라미터와 다르게 HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우엔 @RequestParam, @ModelAttribute를 사용할 수 없다. (HTML Form 형식으로 전달되는 경우는 요청파라미로 인정됨) 단순 메시지클라이언트가 POST 방식으로 데이터를 직접 바디에 담아보내는 경우 ServletInputStream 사용 @PostMapping("/request-body-string-v1") public void requestBodyString (HttpServletRequest request, HttpServletResponse response) throws IOException { //HTTP 메시지 바디의 데이터를 InputStream을 사용해서 읽음 ..
부모 클래스(기존 코드)의 기능을 자식 클래스가 재사용하는 것이 상속이다. 필드에 protected를 사용한다.해당 필드들이 외부에서 직접 접근하지 못 하도록 막고, 자식 클래스에서는 직접 접근이 가능하도록 하기 위함public class Animal { protected String name; protected int leg; public Animal (String name, int leg) { this.name = name; this.leg = leg; } public void introduce() { System.out.println("나는 %d개의 다리를 가진 %s이야!".formatted(leg, name)); }} exten..