오늘 생각한 것
배움이 더디다
오늘 공부한 것
오늘 푼 문제
오늘 알게된 것
Controller에 대해서 아주 약간이지만 감을 잡았다
정적페이지와 동적페이지를 만들면서 아직 추가공부가 필요하지만 api를 통해 어떻게 요청들이 처리되는지 대충 알 거 같다고 생각했다
@GetMapping :
@Controller가 붙은 클래스의 Method에서 반환 타입이 String이면 반환하는 String에 부합하는 페이지를 찾아서 반환해 줌
기본적으로 Thymeleaf를 사용하게 되면 resources-> templates에 있는 html을 읽어온다
다른 데에 있는 html을 읽고 싶으면 Thymeleaf를 gradle에서 빼면 됨, 설정 세세하게 변경하는 법이 있을텐데 지금은 모르겠다
아무튼 이렇게 하면 된다
@GetMapping("/static-hello")
public String hello() {
return "hello.html";
}
Thymeleaf를 사용하면 html을 안 붙여도 templates에 있다면 알아서 찾아준다 다음처럼
@GetMapping("/html/templates")
public String htmlTemplates() {
return "hello";
}
반환되는 String앞에다 redirect:/를 붙이면 templates에 없어도 다시 읽어와준다
이거는 한번에 가는게 아니라 경유해서 가는 느낌
@GetMapping("/html/redirect")
public String htmlStatic() {
return "redirect:/hello.html";
}
동적 페이지 만들 때 Model 객체가 왔다갔다 한다고 한다
@GetMapping("/html/dynamic")
public String htmlDynamic(Model model) {//Front Controller에서 Model 객체를 넣어주면 이용
visitCount++;//요청이 들어오면 visitCount를 1 증가시킴
model.addAttribute("visits", visitCount);//모델에 변동이 필요한 데이터를 넣어줌
return "hello-visit";
}
Model객체에다 attribute 값 줘서 날려보내는데
미니프로젝트로 Javascript로 팀 소개 페이지 만들었을때 동적으로 생성한 Element들 식별하려고 <div>안에다 attribute 붙여서 넣던 거랑 비슷하게 느껴졌다
아무튼 model에 넣어서 날리면
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Hello Spring</title></head>
<body>
<div>
Hello, Spring 동적 웹 페이지!!
</div>
<div>
(방문자 수: <span th:text="${visits}"></span>)//아까 model에 넣어준 attribute의 이름
</div>
</body>
</html>
html에서 model을 받아서 그 model의 visits attribute를 읽어서 동적인 요소가 html에 반영된다
'개발일지' 카테고리의 다른 글
2023-11-08, Today I Learned (0) | 2023.11.08 |
---|---|
2023-11-07, Today I Learned (0) | 2023.11.07 |
2023-11-02, Today I Learned (1) | 2023.11.02 |
2023-11-01, Today I Learned (1) | 2023.11.01 |
2023-10-31, Today I Learned (0) | 2023.10.31 |