-
[모각코 11주차] 결과 (14:00 ~ 17:00)카테고리 없음 2022. 9. 18. 14:42
요청매핑
- 매핑 정보
- @RestController
- @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
- @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
- @RequestMapping
- /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
- 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
- @RestController
- 둘다 허용
- 다음 두 요청은 다른 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 APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
- 특정 파라미터 조건 매핑
- 특정 파라미터가 있거나 없는 조건을 추가할 수 있다. 잘 사용하지 않음
- 쿼리 파라미터 (?mode=debug)이다.
- 특정 헤더 조건 매핑
- HTTP header에 mode=debug가 들어있어야한다.
- Postman으로 테스팅 해야한다
- 미디어 타입 조건 매핑
요청매핑
- 매핑 정보
- @RestController
- @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
- @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
- @RequestMapping
- /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
- 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
- @RestController
- 둘다 허용
- 다음 두 요청은 다른 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 APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
- 특정 파라미터 조건 매핑
- 특정 파라미터가 있거나 없는 조건을 추가할 수 있다. 잘 사용하지 않음
- 쿼리 파라미터 (?mode=debug)이다.
- 특정 헤더 조건 매핑
- HTTP header에 mode=debug가 들어있어야한다.
- Postman으로 테스팅 해야한다
- 미디어 타입 조건 매핑
요청매핑
- 매핑 정보
- @RestController
- @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
- @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
- @RequestMapping
- /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
- 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
- @RestController
- 둘다 허용
- 다음 두 요청은 다른 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 APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
- 특정 파라미터 조건 매핑
- 특정 파라미터가 있거나 없는 조건을 추가할 수 있다. 잘 사용하지 않음
- 쿼리 파라미터 (?mode=debug)이다.
- 특정 헤더 조건 매핑
- HTTP header에 mode=debug가 들어있어야한다.
- Postman으로 테스팅 해야한다
- 미디어 타입 조건 매핑
요청매핑
- 매핑 정보
- @RestController
- @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 렌더링한다.
- @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메세지 바디에 바로 입력한다. 따라서 실행 결과로 문자열을 받을 수 있다.
- @RequestMapping
- /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.
- 대부분의 속성을 배열로 제공하므로 다중 설정이 가능하다 (여러 URL 매핑 가능)
- @RestController
- 둘다 허용
- 다음 두 요청은 다른 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 APi는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
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 - 쿼리 파라미터
- 요청 파라미터 조회
- 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 - 쿼리 파라미터
- 요청 파라미터 조회
- 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 - 쿼리 파라미터
- 요청 파라미터 조회
- 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 - 쿼리 파라미터
- 요청 파라미터 조회
- 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 - 쿼리 파라미터
- 요청 파라미터 조회
- 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 - 쿼리 파라미터
- 요청 파라미터 조회
- 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는 생략할 수 있다.
- 매핑 정보