본문 바로가기

Java/Spring Boot

[Spring Boot] Spring MVC(@Controller, @GetMapping, @RequestParam)

Controller 란?

Spring MVC 패턴에서 C에 해당되는 Controller는

사용자의 요청을 처리하고 해당하는 view에게 전달하는 역할을 한다.

 

Controller 어노테이션

 @Controller

  • 작성한 클래스를 IOC 컨테이너 에 등록한다.(Bean으로 등록 -> 객체)
  • Component의 구체화 된 어노테이션이다.

Component란 ?

  • Component 란 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈을 뜻한다.
  • SpringBoot 에서는 내부 IOC 컨테이너 에 등록되어 있는 클래스 이다.

@Component

@Controller 사용

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이고 

경로를 통해서 파일을 불러와서페이지를 로드 시킨다.

View 생성 및 경로

src/main/resources/templates 안에

index.html이 있고 ViewResolver에서 

Prefix는 index 이고 suffix는 html이다.

 

실행 결과

 

localhost:8004번 호스트 주소와  @GetMapping에 index 가 맵핑하여

정상적으로 실행이 되었다.

 

@RequestParam

데이터를 송신 수신 할때 사용한다.

 

RequestParam 기본 형태

@RequestParam("가져올 데이터 이름") 데이터 타입 변수

@RequestParam

 

메소드의 파라미터 값으로 @RequestParam을 어노테이션 해주고 (name)을 담고있다.

String name으로 데이터 타입과 담을 변수 설정을 해준다.

 

get 요청

이제 postman 프로그램을 사용해서 

Params에 변수와 값을 담아 Get요청을 해보겠다.

요청 결과

localhost:8004/index?name=james로 요청이 날아가서

해당 값이 출력 되었다.

 

@RequestParam은 위처럼 작성해도 되지만 스프링 부트에서는

편의를 제공하기 위해서 다른 방법으로도 작성이 가능하다.

가져올 데이터 이름 제외

@RequestParam()에 가져올 데이터 이름을 제외해서 작성하여도 정상적으로 get요청이 되고

 

타입과 변수만 작성 가능

 

이렇게 파라미터만 작성을 해도 get요청이 가능하다.

이러한 이유는 @GetMapping 어노테이션으로 인해서 가능하다.