ABOUT ME

Today
Yesterday
Total
  • [모각코 11주차] 결과 (14:00 ~ 17:00)
    카테고리 없음 2022. 9. 18. 14:42

    요청매핑

    • 매핑 정보
      • @RestController
        • @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
        • @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
      • @RequestMapping
        • /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
        • 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
    • 둘다 허용
      • 다음 두 요청은 다른 URL이지만, 스프링은 다음 URL 요청들을 같은 요청으로 매핑한다.
      • 매핑 : /hello-basic
      • URL 요청 : /hello-basic, /hello-basic/
    • HTTP 메서드
      • @RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출된다.
      • @GetMapping, @PostMapping등 HTTP메서드로 축약한 어노테이션을 사용하여 메서드를 지정할 수 있다.
    • Path Variable(경로 변수) 사용
      • 최근 HTTP APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
        • /mapping/userA, /users/1
      • @RequestMapping은 URL 경로를 템플릿화 할 수 있는데, @PathVariable을 사용하면 매칭되는 부분을 편하게 조회할 수 있다.
      • @PathVariable의 이름과 파라미터 이름이 같으면 생략할 수 있다.
      • 여러개의 경로변수를 사용할 수 있다.
    • 특정 파라미터 조건 매핑
      • 특정 파라미터가 있거나 없는 조건을 추가할 수 있다. 잘 사용하지 않음
      • 쿼리 파라미터 (?mode=debug)이다.
    • 특정 헤더 조건 매핑
      • HTTP header에 mode=debug가 들어있어야한다.
      • Postman으로 테스팅 해야한다
    • 미디어 타입 조건 매핑

    요청매핑

    • 매핑 정보
      • @RestController
        • @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
        • @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
      • @RequestMapping
        • /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
        • 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
    • 둘다 허용
      • 다음 두 요청은 다른 URL이지만, 스프링은 다음 URL 요청들을 같은 요청으로 매핑한다.
      • 매핑 : /hello-basic
      • URL 요청 : /hello-basic, /hello-basic/
    • HTTP 메서드
      • @RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출된다.
      • @GetMapping, @PostMapping등 HTTP메서드로 축약한 어노테이션을 사용하여 메서드를 지정할 수 있다.
    • Path Variable(경로 변수) 사용
      • 최근 HTTP APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
        • /mapping/userA, /users/1
      • @RequestMapping은 URL 경로를 템플릿화 할 수 있는데, @PathVariable을 사용하면 매칭되는 부분을 편하게 조회할 수 있다.
      • @PathVariable의 이름과 파라미터 이름이 같으면 생략할 수 있다.
      • 여러개의 경로변수를 사용할 수 있다.
    • 특정 파라미터 조건 매핑
      • 특정 파라미터가 있거나 없는 조건을 추가할 수 있다. 잘 사용하지 않음
      • 쿼리 파라미터 (?mode=debug)이다.
    • 특정 헤더 조건 매핑
      • HTTP header에 mode=debug가 들어있어야한다.
      • Postman으로 테스팅 해야한다
    • 미디어 타입 조건 매핑

    요청매핑

    • 매핑 정보
      • @RestController
        • @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
        • @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
      • @RequestMapping
        • /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
        • 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
    • 둘다 허용
      • 다음 두 요청은 다른 URL이지만, 스프링은 다음 URL 요청들을 같은 요청으로 매핑한다.
      • 매핑 : /hello-basic
      • URL 요청 : /hello-basic, /hello-basic/
    • HTTP 메서드
      • @RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출된다.
      • @GetMapping, @PostMapping등 HTTP메서드로 축약한 어노테이션을 사용하여 메서드를 지정할 수 있다.
    • Path Variable(경로 변수) 사용
      • 최근 HTTP APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
        • /mapping/userA, /users/1
      • @RequestMapping은 URL 경로를 템플릿화 할 수 있는데, @PathVariable을 사용하면 매칭되는 부분을 편하게 조회할 수 있다.
      • @PathVariable의 이름과 파라미터 이름이 같으면 생략할 수 있다.
      • 여러개의 경로변수를 사용할 수 있다.
    • 특정 파라미터 조건 매핑
      • 특정 파라미터가 있거나 없는 조건을 추가할 수 있다. 잘 사용하지 않음
      • 쿼리 파라미터 (?mode=debug)이다.
    • 특정 헤더 조건 매핑
      • HTTP header에 mode=debug가 들어있어야한다.
      • Postman으로 테스팅 해야한다
    • 미디어 타입 조건 매핑

    요청매핑

    • 매핑 정보
      • @RestController
        • @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
        • @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
      • @RequestMapping
        • /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
        • 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
    • 둘다 허용
      • 다음 두 요청은 다른 URL이지만, 스프링은 다음 URL 요청들을 같은 요청으로 매핑한다.
      • 매핑 : /hello-basic
      • URL 요청 : /hello-basic, /hello-basic/
    • HTTP 메서드
      • @RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출된다.
      • @GetMapping, @PostMapping등 HTTP메서드로 축약한 어노테이션을 사용하여 메서드를 지정할 수 있다.
    • Path Variable(경로 변수) 사용
      • 최근 HTTP APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
        • /mapping/userA, /users/1
      • @RequestMapping은 URL 경로를 템플릿화 할 수 있는데, @PathVariable을 사용하면 매칭되는 부분을 편하게 조회할 수 있다.
      • @PathVariable의 이름과 파라미터 이름이 같으면 생략할 수 있다.
      • 여러개의 경로변수를 사용할 수 있다.
    •  

    HTTP 요청 - 기본, 헤더 조회

    • 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
      • HttpServletRequest, HttpServletResponse
      • HttpMethod : Http 메서드를 조회한다.
      • Locale : locale 정보를 조회한다.
      • @RequestHeader MultiValueMap<String, String> headerMap
        • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
        • MultiValueMap
          • Map과 유사한데, 하나의 키에 여러 값을 받을 수 있다.
          • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.
            • KeyA=value1&KeyA=value2
      • @RequestHeader(”host”) String host
        • 특정 HTTP 헤더를 조회한다.
        • 필수여부 : required, 기본 값 속성 : defaultValue
      • @CookieValue(value = “myCookie”, required = false) String cookie
        • 특정 쿠키를 조회한다.

    HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

    • 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
      • GET - 쿼리 파라미터
        • /url?username=hello&age=20
        • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
        • 검색, 필터, 페이징등에서 많이 사용함
      • POST - HTML Form
        • content-type: application/x-www-form-urlencoded
        • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
        • 회원가입, 상품 주문, HTML Form 사용
      • HTTP message body에 데이터를 직접 담아서 요청
        • HTTP API에서 주로 사용, JSON, XML, TEXT
        • 데이터 형식은 주로 JSON 사용
        • POST, PUT, PATCH
    • 요청 파라미터 조회
      • GET 쿼리 파라미터 전송 방식이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다
      • request.getParameter() : HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
      • @RequestParam : 파라미터 이름으로 바인딩
        • HTTP 파라미터 이름이 변수 이름과 같으면 (name=”xxx”) 생략 가능
        • String, int, Integer등의 단순 타입이면 @RequestParam도 생략 가능
        • 주의, /request-param?username= → 빈문자로 통과
        • 주의, int형으로 입력받을 때 null값이 들어오면 500에러 발생 (Wrapper 클래스 사용)
        • defaultValue 설정 가능
      • @ResponseBody : View 조회를 무시하고, HTTP message body에 직접 입력
      • 파라미터를 Map, MultiValueMap으로 조회할 수 있다.
      • 파라미터의 값이 1개가 확실하면 Map을 사용해도 되지만, 그렇지 않다면 MultiValueMap을 사용해야한다.

    HTTP 요청 파라미터 - @ModelAttribute

    • 실제 개발을 할 때 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야한다.
    • 스프링에서는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다.
    • 이 코드가 실행되면 HelloData 객체가 생성되고, 요청 파라미터의 값이 들어가게된다.
    • 스프링 MVC는 @ModelAttribute가 있으면 다음 기능을 실행한다.
      • HelloData 객체 생성
      • 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾고, 해당 프로퍼티의 Setter를 호출해서 파라미터의 값을 바인딩한다.
    • @ModelAttribute는 생략할 수 있다.

    HTTP 요청 - 기본, 헤더 조회

    • 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
      • HttpServletRequest, HttpServletResponse
      • HttpMethod : Http 메서드를 조회한다.
      • Locale : locale 정보를 조회한다.
      • @RequestHeader MultiValueMap<String, String> headerMap
        • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
        • MultiValueMap
          • Map과 유사한데, 하나의 키에 여러 값을 받을 수 있다.
          • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.
            • KeyA=value1&KeyA=value2
      • @RequestHeader(”host”) String host
        • 특정 HTTP 헤더를 조회한다.
        • 필수여부 : required, 기본 값 속성 : defaultValue
      • @CookieValue(value = “myCookie”, required = false) String cookie
        • 특정 쿠키를 조회한다.

    HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

    • 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
      • GET - 쿼리 파라미터
        • /url?username=hello&age=20
        • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
        • 검색, 필터, 페이징등에서 많이 사용함
      • POST - HTML Form
        • content-type: application/x-www-form-urlencoded
        • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
        • 회원가입, 상품 주문, HTML Form 사용
      • HTTP message body에 데이터를 직접 담아서 요청
        • HTTP API에서 주로 사용, JSON, XML, TEXT
        • 데이터 형식은 주로 JSON 사용
        • POST, PUT, PATCH
    • 요청 파라미터 조회
      • GET 쿼리 파라미터 전송 방식이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다
      • request.getParameter() : HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
      • @RequestParam : 파라미터 이름으로 바인딩
        • HTTP 파라미터 이름이 변수 이름과 같으면 (name=”xxx”) 생략 가능
        • String, int, Integer등의 단순 타입이면 @RequestParam도 생략 가능
        • 주의, /request-param?username= → 빈문자로 통과
        • 주의, int형으로 입력받을 때 null값이 들어오면 500에러 발생 (Wrapper 클래스 사용)
        • defaultValue 설정 가능
      • @ResponseBody : View 조회를 무시하고, HTTP message body에 직접 입력
      • 파라미터를 Map, MultiValueMap으로 조회할 수 있다.
      • 파라미터의 값이 1개가 확실하면 Map을 사용해도 되지만, 그렇지 않다면 MultiValueMap을 사용해야한다.

    HTTP 요청 파라미터 - @ModelAttribute

    • 실제 개발을 할 때 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야한다.
    • 스프링에서는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다.
    • 이 코드가 실행되면 HelloData 객체가 생성되고, 요청 파라미터의 값이 들어가게된다.
    • 스프링 MVC는 @ModelAttribute가 있으면 다음 기능을 실행한다.
      • HelloData 객체 생성
      • 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾고, 해당 프로퍼티의 Setter를 호출해서 파라미터의 값을 바인딩한다.
    • @ModelAttribute는 생략할 수 있다.

    HTTP 요청 - 기본, 헤더 조회

    • 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
      • HttpServletRequest, HttpServletResponse
      • HttpMethod : Http 메서드를 조회한다.
      • Locale : locale 정보를 조회한다.
      • @RequestHeader MultiValueMap<String, String> headerMap
        • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
        • MultiValueMap
          • Map과 유사한데, 하나의 키에 여러 값을 받을 수 있다.
          • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.
            • KeyA=value1&KeyA=value2
      • @RequestHeader(”host”) String host
        • 특정 HTTP 헤더를 조회한다.
        • 필수여부 : required, 기본 값 속성 : defaultValue
      • @CookieValue(value = “myCookie”, required = false) String cookie
        • 특정 쿠키를 조회한다.

    HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

    • 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
      • GET - 쿼리 파라미터
        • /url?username=hello&age=20
        • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
        • 검색, 필터, 페이징등에서 많이 사용함
      • POST - HTML Form
        • content-type: application/x-www-form-urlencoded
        • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
        • 회원가입, 상품 주문, HTML Form 사용
      • HTTP message body에 데이터를 직접 담아서 요청
        • HTTP API에서 주로 사용, JSON, XML, TEXT
        • 데이터 형식은 주로 JSON 사용
        • POST, PUT, PATCH
    • 요청 파라미터 조회
      • GET 쿼리 파라미터 전송 방식이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다
      • request.getParameter() : HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
      • @RequestParam : 파라미터 이름으로 바인딩
        • HTTP 파라미터 이름이 변수 이름과 같으면 (name=”xxx”) 생략 가능
        • String, int, Integer등의 단순 타입이면 @RequestParam도 생략 가능
        • 주의, /request-param?username= → 빈문자로 통과
        • 주의, int형으로 입력받을 때 null값이 들어오면 500에러 발생 (Wrapper 클래스 사용)
        • defaultValue 설정 가능
      • @ResponseBody : View 조회를 무시하고, HTTP message body에 직접 입력
      • 파라미터를 Map, MultiValueMap으로 조회할 수 있다.
      • 파라미터의 값이 1개가 확실하면 Map을 사용해도 되지만, 그렇지 않다면 MultiValueMap을 사용해야한다.

    HTTP 요청 파라미터 - @ModelAttribute

    • 실제 개발을 할 때 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야한다.
    • 스프링에서는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다.
    • 이 코드가 실행되면 HelloData 객체가 생성되고, 요청 파라미터의 값이 들어가게된다.
    • 스프링 MVC는 @ModelAttribute가 있으면 다음 기능을 실행한다.
      • HelloData 객체 생성
      • 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾고, 해당 프로퍼티의 Setter를 호출해서 파라미터의 값을 바인딩한다.
    • @ModelAttribute는 생략할 수 있다.

    HTTP 요청 - 기본, 헤더 조회

    • 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
      • HttpServletRequest, HttpServletResponse
      • HttpMethod : Http 메서드를 조회한다.
      • Locale : locale 정보를 조회한다.
      • @RequestHeader MultiValueMap<String, String> headerMap
        • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
        • MultiValueMap
          • Map과 유사한데, 하나의 키에 여러 값을 받을 수 있다.
          • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.
            • KeyA=value1&KeyA=value2
      • @RequestHeader(”host”) String host
        • 특정 HTTP 헤더를 조회한다.
        • 필수여부 : required, 기본 값 속성 : defaultValue
      • @CookieValue(value = “myCookie”, required = false) String cookie
        • 특정 쿠키를 조회한다.

    HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

    • 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
      • GET - 쿼리 파라미터
        • /url?username=hello&age=20
        • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
        • 검색, 필터, 페이징등에서 많이 사용함
      • POST - HTML Form
        • content-type: application/x-www-form-urlencoded
        • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
        • 회원가입, 상품 주문, HTML Form 사용
      • HTTP message body에 데이터를 직접 담아서 요청
        • HTTP API에서 주로 사용, JSON, XML, TEXT
        • 데이터 형식은 주로 JSON 사용
        • POST, PUT, PATCH
    • 요청 파라미터 조회
      • GET 쿼리 파라미터 전송 방식이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다
      • request.getParameter() : HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
      • @RequestParam : 파라미터 이름으로 바인딩
        • HTTP 파라미터 이름이 변수 이름과 같으면 (name=”xxx”) 생략 가능
        • String, int, Integer등의 단순 타입이면 @RequestParam도 생략 가능
        • 주의, /request-param?username= → 빈문자로 통과
        • 주의, int형으로 입력받을 때 null값이 들어오면 500에러 발생 (Wrapper 클래스 사용)
        • defaultValue 설정 가능
      • @ResponseBody : View 조회를 무시하고, HTTP message body에 직접 입력
      • 파라미터를 Map, MultiValueMap으로 조회할 수 있다.
      • 파라미터의 값이 1개가 확실하면 Map을 사용해도 되지만, 그렇지 않다면 MultiValueMap을 사용해야한다.

    HTTP 요청 파라미터 - @ModelAttribute

    • 실제 개발을 할 때 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야한다.
    • 스프링에서는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다.
    • 이 코드가 실행되면 HelloData 객체가 생성되고, 요청 파라미터의 값이 들어가게된다.
    • 스프링 MVC는 @ModelAttribute가 있으면 다음 기능을 실행한다.
      • HelloData 객체 생성
      • 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾고, 해당 프로퍼티의 Setter를 호출해서 파라미터의 값을 바인딩한다.
    • @ModelAttribute는 생략할 수 있다.

    HTTP 요청 - 기본, 헤더 조회

    • 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
      • HttpServletRequest, HttpServletResponse
      • HttpMethod : Http 메서드를 조회한다.
      • Locale : locale 정보를 조회한다.
      • @RequestHeader MultiValueMap<String, String> headerMap
        • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
        • MultiValueMap
          • Map과 유사한데, 하나의 키에 여러 값을 받을 수 있다.
          • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.
            • KeyA=value1&KeyA=value2
      • @RequestHeader(”host”) String host
        • 특정 HTTP 헤더를 조회한다.
        • 필수여부 : required, 기본 값 속성 : defaultValue
      • @CookieValue(value = “myCookie”, required = false) String cookie
        • 특정 쿠키를 조회한다.

    HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

    • 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
      • GET - 쿼리 파라미터
        • /url?username=hello&age=20
        • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
        • 검색, 필터, 페이징등에서 많이 사용함
      • POST - HTML Form
        • content-type: application/x-www-form-urlencoded
        • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
        • 회원가입, 상품 주문, HTML Form 사용
      • HTTP message body에 데이터를 직접 담아서 요청
        • HTTP API에서 주로 사용, JSON, XML, TEXT
        • 데이터 형식은 주로 JSON 사용
        • POST, PUT, PATCH
    • 요청 파라미터 조회
      • GET 쿼리 파라미터 전송 방식이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다
      • request.getParameter() : HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
      • @RequestParam : 파라미터 이름으로 바인딩
        • HTTP 파라미터 이름이 변수 이름과 같으면 (name=”xxx”) 생략 가능
        • String, int, Integer등의 단순 타입이면 @RequestParam도 생략 가능
        • 주의, /request-param?username= → 빈문자로 통과
        • 주의, int형으로 입력받을 때 null값이 들어오면 500에러 발생 (Wrapper 클래스 사용)
        • defaultValue 설정 가능
      • @ResponseBody : View 조회를 무시하고, HTTP message body에 직접 입력
      • 파라미터를 Map, MultiValueMap으로 조회할 수 있다.
      • 파라미터의 값이 1개가 확실하면 Map을 사용해도 되지만, 그렇지 않다면 MultiValueMap을 사용해야한다.

    HTTP 요청 파라미터 - @ModelAttribute

    • 실제 개발을 할 때 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야한다.
    • 스프링에서는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다.
    • 이 코드가 실행되면 HelloData 객체가 생성되고, 요청 파라미터의 값이 들어가게된다.
    • 스프링 MVC는 @ModelAttribute가 있으면 다음 기능을 실행한다.
      • HelloData 객체 생성
      • 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾고, 해당 프로퍼티의 Setter를 호출해서 파라미터의 값을 바인딩한다.
    • @ModelAttribute는 생략할 수 있다.

    HTTP 요청 - 기본, 헤더 조회

    • 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
      • HttpServletRequest, HttpServletResponse
      • HttpMethod : Http 메서드를 조회한다.
      • Locale : locale 정보를 조회한다.
      • @RequestHeader MultiValueMap<String, String> headerMap
        • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
        • MultiValueMap
          • Map과 유사한데, 하나의 키에 여러 값을 받을 수 있다.
          • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.
            • KeyA=value1&KeyA=value2
      • @RequestHeader(”host”) String host
        • 특정 HTTP 헤더를 조회한다.
        • 필수여부 : required, 기본 값 속성 : defaultValue
      • @CookieValue(value = “myCookie”, required = false) String cookie
        • 특정 쿠키를 조회한다.

    HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form

    • 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
      • GET - 쿼리 파라미터
        • /url?username=hello&age=20
        • 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
        • 검색, 필터, 페이징등에서 많이 사용함
      • POST - HTML Form
        • content-type: application/x-www-form-urlencoded
        • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
        • 회원가입, 상품 주문, HTML Form 사용
      • HTTP message body에 데이터를 직접 담아서 요청
        • HTTP API에서 주로 사용, JSON, XML, TEXT
        • 데이터 형식은 주로 JSON 사용
        • POST, PUT, PATCH
    • 요청 파라미터 조회
      • GET 쿼리 파라미터 전송 방식이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다
      • request.getParameter() : HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
      • @RequestParam : 파라미터 이름으로 바인딩
        • HTTP 파라미터 이름이 변수 이름과 같으면 (name=”xxx”) 생략 가능
        • String, int, Integer등의 단순 타입이면 @RequestParam도 생략 가능
        • 주의, /request-param?username= → 빈문자로 통과
        • 주의, int형으로 입력받을 때 null값이 들어오면 500에러 발생 (Wrapper 클래스 사용)
        • defaultValue 설정 가능
      • @ResponseBody : View 조회를 무시하고, HTTP message body에 직접 입력
      • 파라미터를 Map, MultiValueMap으로 조회할 수 있다.
      • 파라미터의 값이 1개가 확실하면 Map을 사용해도 되지만, 그렇지 않다면 MultiValueMap을 사용해야한다.

    HTTP 요청 파라미터 - @ModelAttribute

    • 실제 개발을 할 때 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야한다.
    • 스프링에서는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다.
    • 이 코드가 실행되면 HelloData 객체가 생성되고, 요청 파라미터의 값이 들어가게된다.
    • 스프링 MVC는 @ModelAttribute가 있으면 다음 기능을 실행한다.
      • HelloData 객체 생성
      • 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾고, 해당 프로퍼티의 Setter를 호출해서 파라미터의 값을 바인딩한다.
    • @ModelAttribute는 생략할 수 있다.
Designed by Tistory.