spring.web.ch01
@Controller
public class MainController { //IoC 대상
@GetMapping("/")
public String Hello(Model model) { /
model.addAttribute("now", ZonedDateTime.now()); //현재 시각
return "ch01/hello";//뷰를 이름으로 지칭한다.
}
}
@Controller
component이지만, controller라는 것을 알려줘야 한다. request를 받을 수 있는 객체로 판단하도록 한다.
@GetMapping("/")
contoller의 주소를 할당해야 request 들어왔을 때 매핑 가능하다.
<%@ page language='java' contentType='text/html; charset=utf-8' pageEncoding='utf-8' isELIgnored='false' %>
접속 시각 : ${now}
ch01/hello
AppConfig는 dispatcher를 파라미터로 받아드리는 용도로 사용하고 있다.
dispatcher(여기서 container)가 AppConfig를 읽어드리고, 의뢰받은 이름은 ch01/hello이다.
여기서 /WEB-INF/view/ch01/hello.jsp로 해석하고
dispatcher 안에 들어 있는 모델은 now이다.
작동 원리
client는 화면과 같은 localhost/spring.web/ 주소로 request를 보낸다.
localhost덕분에 tomcat이 받게 되고, spring.web 덕분에 app이 받고, 마지막 /덕분에 dispatcher가 받는 것이다.
dispatcher가 리퀘스트 받으면, dispatcher는 contextPath 이후의 주소에 관심 있고, 그것이 /이다.
dispatcher는 매핑을 할 controller를 찾고, GetMapping("/")을 발견하다. 여기서 Hello는 '핸들러'가 되는 것이다.
Hello 핸들러는 now라는 모델을 준비하고, 뷰를 준비한다.
dispatcher는 now라는 모델을 request에 담아서 ch01/main에 보낸다.
모델 값을 now에 투입 시켜서 최종으로 HTML코드 완성 시켜서 response를 만든다.
이 response는 controller에서 dispatcher에서 tomcat을 거쳐서 클라이언트에 간다.
'Backend Web > Spring Boot · Framework' 카테고리의 다른 글
[JUnit5] No ParameterResolver registered for parameter 에러 (0) | 2022.04.26 |
---|---|
[Spring] Gradle (0) | 2022.04.24 |
Maven 필수 개념 (0) | 2020.11.19 |
Maven (0) | 2020.11.19 |
spring (0) | 2020.11.19 |