Controller 패턴이 적용되어있지 않았다면 위의 4가지 API 를 처리하기 위해 3개의 클래스를 만들어야했을 것
API 마다 파일을 만들 필요가 없음
유사한 성격의 API 를 하나의 Controller 로 관리
( @RequestMapping 사용 )
메서드 이름 내 마음대로 설정 가능 ( 클래스 내의 중복 메서드명 불가 )
정적페이지의 기본은 static 폴더에 정적 페이지 hello.html 을 만들고 그냥 주소창에 /hello.html 로 접속시키면 바로 연결된다.
이를 Controller 에서 연결시키고 싶다면
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf’
해당 dependency를 주석 처리해야 테스트가 가능
thymeleaf 는 동적 페이지 처리를 위한 템플릿 엔진.
추가하면 자동으로 Controller에서 html 파일 찾는 경로를/resources/templates 로 설정
@GetMapping("/static-hello")
public String hello() {
return "hello.html";
}
위 처럼 코드를 짜면 /static-hello 로 접속했을 때 templates 폴더 안의 hello.html 을 view 로 보내 사용자에게 보여준다.
@GetMapping("/html/redirect")
public String htmlStatic() {
return "redirect:/hello.html";
}
템플릿 엔진을 적용한 상태에서 static 폴더의 html 파일을 Controller를 통해서 처리하고 싶다면 이렇게 "redirect:/hello.html" redirect 요청을 문자열로 반환하면 http://localhost:8080/hello.html 요청이 재 수행되면서 static 폴더의 파일을 반환할 수 있음
@GetMapping("/html/templates")
public String htmlTemplates() {
return "hello";
}
templates 폴더로 경로를 설정하면 return 시에 .html 을 생략한 채 "hello" 로 view 를 전달할 수 있다.
- Client 요청을 Controller 에서 Model 로 처리
- Template engine (Thymeleaf) 에게 View, Model 전달
- View : 동적 HTML 파일
- Model : View 에 적용할 정보들
- visitCount 변수를 visits 라는 이름으로 hello-visit. html 에 전달
- 전달받은 데이터는 ${visit} 꼴로 html 파일에서 출력
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Ioc (제어의 역전) 와 DI (의존성 주입) (0) | 2024.08.16 |
---|---|
[Spring] CRUD (0) | 2024.08.13 |
[Spring] PathVariable, RequestParam, ModelAttribute, RequestBody (0) | 2024.08.13 |
[Spring] 데이터를 Client 에 반환, Jackson 라이브러리 (0) | 2024.08.12 |
[Spring] Gradle, Lombok (0) | 2024.08.11 |