1.MainController
@Controller = bean설정해주며 Controller를 어노테이션을하면 @RequestMapping 어노테이션도 사용가능해진다. @RequestMapping("/")괄호안에 문자열 값은 value로 요청 주소를 나타낸다
1.1 왜 문자열로 return을 하는걸까?
return으로 문자열로 받으면 viewResolver는 view를 해석하는 녀석이 여기에 prefix와 surfix를 붙여 jsp화면에 풀경로만들고 포워딩해준다.
1. 메소드 요청 메핑하기
•
RequestMapping 설정에 method 방식을 지정하지 않으면 GET/POST 요청 둘다 처리함
•
매개변수 Model은 Request라고 생각하면되고 model를 매개변수로 선언하면 springDisPathcerServlet에서 선언되어진 매개변수를 자동으러 넣어줌
•
model영역에 값을 담을 떄 addAttribute(key, value)방식으로 값을 담아 줄 수있다.
호출방식(순서)
1.
client가 요청을하면 Controller를 통해 바로 RequestMapping으로 들어올거같은데 그렇지않다.
2.
실제 모든요청은 Dispatcher servlet이라는 servlet으로 다 간다.
3.
여기서 먼저 bean으로 Ioc Container가 controller 어노테이션 가지고있는것을 bean으로 다 등록을 하고있다
4.
그 때 class가 가지고있는데 RequestMapping이 달려져있는 모든정보를 container가 다 인지한다.
5.
그 후 등록된 키값과 메소드타입의 메소드 key, value방식으로 모든 메소드들을 handler mapping으로 관리
6.
handler매핑에 key값을 전달 그럼 어떤메소드를 호출해야하는지 반환받는다
7.
invoke기능을 이용해서 실제 컨트롤러에있는 메소드를 호출
2. Mapping도 여러개를 할 수 있다!
Mapping할때 여러개의 값을 매핑할 수 있다. 어노테이션RequestMapping을 이용하며 value값을 선언할때는 배열형식으로 선언해준다. methode는 포스트방식, 겟 방식으로 선택할 수 있다.
3. PathVariable이란?
url뒤에 값을 가져갈 수 있는것을 의미한다
특징
•
pathVariable로 전달되는 값은 반드시 매개변수 이름이 동일해야한다.{설정된 변수이름}
•
만약 동일하지아 않으면 @PathVariable("이름")을 설정해주어여한다.
•
어노테이션 생략이 가능하지만 작성해주는 것이 의미파악에 좋다
•
핸들러 메소드에서 요청 객체를 들춰서 전달 된 값을 꺼내볼 필요업이 url 경로에 위치한 값을 value로 인식하는 방법이다
•
특히 REST형 웹서비스를 설계할 때 유용하다.
요청 메소드별 전용 어노테이션(since 4.3)
핸들러 메소드를 조금 더 간결하게 코딩 할 수 있게 해준다.
* 요청 메소드 어노테이션
* POST @PostMapping (insert)
* GET @GetMapping (select)
* Delete @DeleteMapping (delete)
* Put @PutMapping (update)
3. 메소드레벨에 RequestMapping
•
클래스에 설정된 매피설정과 일치하면서 다른 요청 처리에 대한핸들러 메소드가 준비되지않았다면 해당 메소드를 호줄한다