
localhost:8080 요청시 home. html이 응답하도록 코드를 작성해야했다. Controller가 없었기에 RoomescapeController를 작성해주었다. 그런데 오류가 났다.. 단순한 컨트롤러였기 때문에 원인을 찾는데 오래 걸렸다.
@Controller
public class RoomescapeController {
@GetMapping("/")
public String GoToHome(){
// 수정 전
// return "templates/home";
// 수정 후
return "home";
}
}
스프링 부트에서는 기본적으로 src/main/resources/templates 디렉토리를 템플릿 파일들의 기본 경로로 사용한다. 그러므로 templates 디렉토리를 사용하지 않고도 템플릿 파일에 직접 접근할 수 있다. 쉽게 말해 작성하지 않아도 되는 경로를 작성해 스프링부트가 오히려 파일을 못 찾고 있었던 것이다.

1단계는 이렇게 통과!
/reservation 요청 시 예약 관리 페이지가 응답하도록 코드를 작성해야 한다.
@GetMapping("/reservation")
public String read(Model model){
List<Reservation> reservations = new ArrayList<>();
model.addAttribute("reservation",reservations);
return "reservation";
}
우선 Reservation DTO를 만들어주고(..) 다음과 같이 매핑했다. 해당 테스트는 가볍게 통과했다.
다만 여기선 담을 정보가 없어서 주어진 정보를 담는 코드로 개선했다.
여기서 지옥의 2시간이 사라졌다..
List<Reservation> reservations = new ArrayList<>();
public ReservationController() {
// 데이터 추가
reservations.add(new Reservation(1L, "브라운", "2023-01-01", "10:00"));
reservations.add(new Reservation(2L, "브라운", "2023-01-02", "11:00"));
reservations.add(new Reservation(3L, "브라운", "2023-01-03", "12:00"));
}
@ResponseBody
@GetMapping("/reservations")
public ResponseEntity<List<Reservation>> read(){
return ResponseEntity.ok().body(reservations);
}
public class Reservation {
private Long id;
private String name;
private String date;
private String time;
public Reservation(Long id, String name, String date, String time) {
this.id = id;
this.name = name;
this.date = date;
this.time = time;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public String getDate() {
return date;
}
public String getTime() {
return time;
}
}
setter까진 구현해줬는데 getter을 구현 안해줘서 reservation 객체에 값이 담기질 않았다. 일반적으로는 id로 데이터베이스에서 데이터를 가져와 담아줄테니 getter가 필요 없지만 여기선 json으로 데이터를 직렬화하고 있고, 따라서 json 객체에 접근하기 위해 getter가 필수였다.
그럼 /reservation에서는 다음과 같은 화면이 뜨고

/reservations에서는 json 데이터가 뜬다

여기서부턴 실패했다 😂
삭제는 구현했는데 추가에서 계속 Context_type이 안 맞는다는 오류가 났는데, 검색해보니 기대되는 json 형태가 아닌 다른 형태가 입력된다고 떴다. 오류를 수정하려고 시간을 많이 들였지만 제자리여서 일단 미완성인 채로 제출했다. 코드 리뷰 받으면 다시 수정하겠다 !