@Controller
해당 클래스가 웹 애플리케이션에서 HTTP 요청을 처리하는 컨트롤러임을 나타낸다.
@Controller, @RestController
spring-context-5.3.23.jar
import org.springframework.stereotype.Controller;
spring-web-5.3.23.jar
import org.springframework.web.bind.annotation.RestController;
@Controller
HTML 페이지를 반환하기 위해 사용된다( return 값이 뷰이름으로 해석됨 )
뷰 리졸버(View Resolver)를 통해 뷰를 찾아 클라이언트에게 전달
메서드에 @ResponseBody 어노테이션을 사용하여 해당 메서드의 반환 값을 HTTP 응답의 본문으로 사용하도록 할수 있다
@RestController
데이터를 반환하기 위해 사용된다( return 값이 HTTP 응답의 본문으로 전송됨 )
주로 JSON 또는 XML 형식의 데이터를 직접 HTTP 응답 본문으로 반환
@Controller + @ResponseBody
객체를 JSON 또는 XML로 변환하여 클라이언트에게 전송
Spring에서는 이를 위해 Jackson 라이브러리나 JAXB(Java Architecture for XML Binding)와 같은 라이브러리를 사용
주로 JSON 변환을 위해 Jackson 라이브러리가 많이 사용되며, Spring은 이를 기본적으로 지원한다
Spring은 클래스패스에 Jackson 라이브러리가 존재하면 자동으로 JSON 변환을 처리합니다. 만약 Jackson 라이브러리가 없다면, Maven 또는 Gradle과 같은 빌드 도구를 사용하여 의존성을 추가해야 합니다.
Spring Boot를 사용하는 경우에는 일반적으로 기본적으로 Jackson이 내장되어 있어 추가 설정이 필요하지 않습니다. Spring Boot는 클래스패스에서 Jackson을 찾아 자동으로 설정하고 사용합니다.
Controller의 메소드가 parameter로 받을 수 있는 값들
클라이언트로부터의 HTTP 요청과 관련된 데이터들 이다. 이 데이터들은 주로 HTTP 요청의 다양한 부분에서 비롯된다.
1. HttpServletRequest 및 HttpServletResponse
HttpServletRequest: 현재 요청과 관련된 정보를 담고 있는 객체. 클라이언트로부터의 모든 HTTP 요청 정보를 담고 있습니다.
HttpServletResponse: 서버에서 클라이언트로의 HTTP 응답을 제어하는 데 사용되는 객체.
2. 세션 및 모델 객체
HttpSession: 클라이언트와 서버 간의 세션 정보를 담고 있는 객체. 세션은 클라이언트가 서버에 접속한 후에도 지속되는 정보를 저장하는 데 사용됩니다.
Model 또는 ModelMap: 컨트롤러에서 뷰로 데이터를 전달하는 데 사용되는 객체.
3.
@RequestHeader: HTTP 요청 헤더에서 값을 추출할 때 사용. 클라이언트가 요청헤더에 포함시킨 정보를 읽어옴.
@RequestParam: HTTP 요청의 파라미터를 메서드의 파라미터로 바인딩하는 데 사용됨.
@PathVariable: URL패턴에서 경로 변수를 추출하여 메서드의 파라미터로 바인딩하는 데 사용됨( 주로 RESTful API에서 사용 )
4. 쿼리 매개변수를 객체로 바인딩
Spring은 쿼리 매개변수의 이름과 객체의 필드 이름을 기반으로 자동으로 매핑을 수행
5. HTTP 요청의 본문(body)에서 데이터 읽기
@RequestBody: HTTP 요청의 본문에 있는 데이터를 읽을 때 사용. 주로 JSON 또는 XML 형식의 데이터를 객체로 변환합니다.
'Spring' 카테고리의 다른 글
| sts에서 springBoot 프로젝트 war파일로 패키징, Gradle Tasks (1) | 2024.04.10 |
|---|---|
| RestTemplate( org.springframework.web.client.RestTemplate.class ) (1) | 2023.11.15 |
| Spring Tool Suite (STS) 4, 서버( Embedded, Standalone ) (0) | 2023.09.07 |
| Spring Starter Project , @SpringBootApplication (0) | 2023.08.06 |
| springBoot( DB Oracle연동 )프로젝트에서, DB관련 오류메세지 (0) | 2023.04.12 |