Spring MVC에서 URL 경로의 일부 값을 메서드의 파라미터로 전달받기 위해 사용되는 어노테이션
❗URL 패턴에서 동적으로 변하는 부분을 변수처럼 다룰 수 있도록 해준다❗

1️⃣ 파라미터 변수명과 PathVariable 변수명이 같으면 속성 값 생략 가능
2️⃣ @PathVariable 다중 사용 가능
Spring MVC에서 HTTP 요청의 쿼리 파라미터나 폼 파라미터를 메서드의 파라미터와 연결하는 방법
속성 설정을 통해 특정 헤더, 특정 파라미터와 Mapping 할 수 있다
클라이언트가 보내는 요청에서 특정한 파라미터 값을 메서드의 파라미터에 바인딩하여 처리하는 방식
다양한 파라미터들을 통해 Spring은 클라이언트의 요청을 유연하게 처리할 수 있게 해준다
1️⃣ 쿼리 파라미터 (Query Parameters)
@RequestParam : HTTP 요청의 쿼리 파라미터를 메서드의 파라미터로 바인딩
URL의 ? 뒤에 key=value 형태로 추가된 파라미터
예) /search?keyword=Spring&category=tech
2️⃣ 폼 파라미터 (Form Parameters)
@RequestParam : 쿼리 파라미터처럼 폼 파라미터도 @RequestParam을 사용하여 처리할 수 있다
HTML 폼에서 POST 요청으로 전송되는 데이터
웹 폼의 <form> 태그를 통해 서버로 데이터를 전송할 때 발생
3️⃣ URL 경로 변수 (Path Variables)
@PathVariable : URL 경로에서 변수를 추출하여 메서드 파라미터에 바인딩
URL 경로에 동적으로 변하는 값을 포함시켜 메서드의 파라미터로 전달하는 방식
예) /user/{userId}와 같은 URL에서 {userId} 값을 파라미터로 사용할 수 있다
4️⃣ 헤더 파라미터 (Header Parameters)
@RequestHeader : HTTP 요청 헤더 값을 메서드 파라미터에 바인딩
HTTP 요청 헤더에 포함된 데이터를 메서드의 파라미터로 받을 수 있다
요청의 Content-Type, Authorization 등의 헤더 값을 처리할 때 사용된다
5️⃣ 쿠키 파라미터 (Cookie Parameters)
@CookieValue : 요청의 쿠키 값을 메서드 파라미터에 바인딩
HTTP 요청에 포함된 쿠키 값을 메서드 파라미터로 받을 수 있다. 쿠키는 클라이언트에 저장되어 서버와의 요청/응답을 통해 전송된다
6️⃣ Request Body (본문 파라미터)
@RequestBody : 요청 본문에 포함된 JSON, XML, 또는 기타 데이터 포맷을 Java 객체로 변환하여 메서드 파라미터로 전달
HTTP 요청의 본문에 포함된 데이터를 처리할 때 사용된다
예) POST 요청에서 JSON 데이터를 보낼 때 이 방법을 사용한다
7️⃣ Multipart (파일 업로드)
@RequestParam : 파일 업로드 시 파일을 메서드 파라미터로 받을 수 있다. 주로 MultipartFile 타입으로 처리된다
파일 업로드와 관련된 파라미터를 처리할 때 사용된다. 파일을 전송하는 multipart/form-data 방식으로 데이터를 받는 경우.
8️⃣ Request 파라미터 (전체 요청 정보)
HttpServletRequest : HTTP 요청을 직접 처리하고, 모든 파라미터나 헤더, 쿠키 등에 접근할 수 있다
HTTP 요청의 전체 파라미터를 HttpServletRequest 객체로 직접 처리할 수 있다
이 방법은 요청의 모든 파라미터에 접근해야 할 때 유용하다
9️⃣ Model 파라미터
Model 또는 ModelMap 객체를 인자로 받아서 사용한다Client에서 Server로 Data를 전달하는 방법은 Query Parameter, HTTP Form Data, HTTP Request Body 크게 세가지가 있다

✅ 장점
간단하고 직관적이며, 데이터가 URL에 포함되어 즉시 확인할 수 있다
GET 요청에서 주로 사용된다
캐시, 즐겨찾기 등에 용이하다
❌ 단점
보안에 취약하다. 중요한 데이터는 URL로 전송되므로 URL이 노출되면 데이터가 유출될 수 있다
URL에 길이가 제한되어 있어, 대량의 데이터를 전송할 수 없다.

✅ 장점
단순한 데이터(텍스트, 숫자 등)를 서버로 전송할 수 있으며, URL에 노출되지 않으므로 보안에 유리하다
데이터 크기에 제한이 적고, 파일 전송 시에는 multipart/form-data 형식을 사용하여 파일 업로드가 가능하다
❌ 단점

✅ 장점
대량의 데이터 전송이 가능하다
JSON, XML 등 다양한 형식으로 구조화된 데이터를 전달할 수 있다
보안상 URL에 노출되지 않고 데이터가 본문에 담겨 전송되므로 민감한 데이터에 적합하다
❌ 단점
URL에 직접적으로 보이지 않기 때문에 요청 데이터를 즉시 확인하기 어려운 경우가 많다
데이터의 크기나 형태를 서버에서 적절히 처리해야 하기 때문에 조금 더 복잡할 수 있다
URL에서 파라미터 값과 이름을 함께 전달하는 방식으로 주로 HTTP 통신 Method 중 GET 방식의 통신을 할 때 많이 사용한다
@Requestparam을 사용하면 요청 파라미터 값에 아주 쉽고 간편하게 접근(Parameter Binding)할 수 있다
❗?뒤에 오는 URL을 Query String, Query Parameter, Request Param이라 한다❗
요청 파라미터를 받아 필요한 Object로 바인딩 해준다
주로 HTML 폼에서 전송된 데이터를 바인딩하고 HTTP Method POST인 경우 사용된다
Spring MVC에서 HTTP 요청 데이터를 Java 객체에 자동으로 바인딩하거나, 컨트롤러 메서드의 파라미터로 전달하는 데 사용되는 어노테이션
강의 정리 감사합니다 너무 어려워요..