기존 html이 실행이 되지 않고 db 전체가 띄워져서 구글링을 해봤지만
@RestController 얘기 말곤 답이 없어서 헤맸는데 오늘 새벽에 그 답을 찾았다.
결론은
location.href = "/space"; // 페이지 변환
가 아닌
location.href = "space.html"; // 페이지 변환
코드로 작성해야 했다.
다른 팀원에게 물어봐서 그 이유에 대해 들었고 요약하면 아래와 같다.
백엔드를 거쳐야 프론트로 가는걸 서버 사이드 렌더링이라고 하고
프론트랑 백엔드가 만나는 유일한 접점이 url 인 것은 서버 사이드 렌더링을 배제한 것이다.
→ 서버사이드 렌더링에 대해서 좀 더 찾아봤다. CSR과 SSR
내가 한 코드로 얘기하면
서버사이드 렌더링을 배제하려면 homeController 자체가 없어야한다.
//homeController 일부 코드
@GetMapping("/login")
public String login(Model model) {
model.addAttribute("data","data");
return "home";
}
@GetMapping("/10s") // 10s 페이지
public String ten(Model model) {
model.addAttribute("data","data");
return "tenseconds";
}
→ 코드를 보면 /login을 입력했을 때 home이라는 html이 실행된다. (서버사이드 렌더링 배제 x)
ajax를 작성하기 이 전에는 Controller를 아래와 같이 작성했다.
@GetMapping("/space") // space 페이지
public String space(Model model) {
model.addAttribute("data","data");
return "space";
}
return으로 space가 있지만 사실상 space.html이라고 볼 수 있다.
ajax 작성 후 위 코드를 주석처리하고 Controller를 db에 get 방식으로 가져오는 코드를 작성했다.
그리고 registry.html에서 페이지 변환으로 location.href="/space"로 했는데
location.href = "/space"; // 페이지 변환
이걸 백엔드에서 보면
@GetMapping("/space")
public List<Registry> doTest() {
return registryService.doTest();
}
controller에서 /space는 html 반환이 적혀있지 않았고, 그래서 db만 반환된 것이다.
location.href = "space.html"; // 페이지 변환
그래서 space.html이라고 적어야 서버사이드렌더링을 배제한 것이다.
'TIL' 카테고리의 다른 글
144일차(모험 53일차) (0) | 2022.02.05 |
---|---|
143일차(모험 52일차)- front & backend (0) | 2022.02.03 |
141일차(모험 50일차) (0) | 2022.02.02 |
140일차(모험 49일차) - 프로젝트(backend) (0) | 2022.01.31 |
137일차(모험 46일차) - 프로젝트 (0) | 2022.01.28 |