Controller 란?
Spring MVC 패턴에서 C에 해당되는 Controller는
사용자의 요청을 처리하고 해당하는 view에게 전달하는 역할을 한다.
Controller 어노테이션
@Controller
- 작성한 클래스를 IOC 컨테이너 에 등록한다.(Bean으로 등록 -> 객체)
- Component의 구체화 된 어노테이션이다.
Component란 ?
- Component 란 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈을 뜻한다.
- SpringBoot 에서는 내부 IOC 컨테이너 에 등록되어 있는 클래스 이다.
@Controller 사용
TestController위의 선언부에
Controller 어노테이션이 달려있고
IOC 컨테이너에 Bean으로 등록이 되었다.
내부에는 indexTestPage() 메소드가 있고 url 주소에 get 요청을 다루고있다.
이때 url 주소 요청에 쓰이는 것이 @GetMapping 어노테이션 이다.
@GetMapping
- url에 대한 Get요청을 메소드와 Mapping, 연결 해주는 것이다.
- RequestMapping와 상속관계에 있다.
GetMapping을 타고 들어가면 아래와 같이 RequestMapping이 있다.
GetMapping은 요청 url에 대한 Get요청을 메소드와 맵핑되어 있고
RequestMapping은 요청 url이 메소드와 같이 맵핑되어있다.
ex) RequestMapping(value="/index", method = @RequestMethod.GET) |
위의 예제에서는 어노테이션으로 호스트 주소 와 indexTestPage() 메소드가
맵핑이 되는것이다. 즉 indexTestPage() 메소드가 실행이 된다는 것이고
리턴 값의 index가 반환 된다는것이다.
View 생성 및 페이지 로드 순서
@Controller 안의 메소드 리턴값이
View Resolver에서 Prefix, suffix 를 통해
view 파일의 경로로 만들어 진다.
메소드의 리턴 값이 index이고
경로를 통해서 파일을 불러와서페이지를 로드 시킨다.
src/main/resources/templates 안에
index.html이 있고 ViewResolver에서
Prefix는 index 이고 suffix는 html이다.
localhost:8004번 호스트 주소와 @GetMapping에 index 가 맵핑하여
정상적으로 실행이 되었다.
@RequestParam
데이터를 송신 수신 할때 사용한다.
RequestParam 기본 형태
@RequestParam("가져올 데이터 이름") 데이터 타입 변수
메소드의 파라미터 값으로 @RequestParam을 어노테이션 해주고 (name)을 담고있다.
String name으로 데이터 타입과 담을 변수 설정을 해준다.
이제 postman 프로그램을 사용해서
Params에 변수와 값을 담아 Get요청을 해보겠다.
localhost:8004/index?name=james로 요청이 날아가서
해당 값이 출력 되었다.
@RequestParam은 위처럼 작성해도 되지만 스프링 부트에서는
편의를 제공하기 위해서 다른 방법으로도 작성이 가능하다.
@RequestParam()에 가져올 데이터 이름을 제외해서 작성하여도 정상적으로 get요청이 되고
이렇게 파라미터만 작성을 해도 get요청이 가능하다.
이러한 이유는 @GetMapping 어노테이션으로 인해서 가능하다.
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] Spring MVC(@Service) (0) | 2022.07.26 |
---|---|
[Spring Boot] Spring MVC (@RestController, @ResponseBody, @RequestMapping) (0) | 2022.07.24 |
[Spring Boot] 프레임워크, 세팅 및 페이지 로드 (0) | 2022.07.14 |