이제 서버를 실행해서 웹 브라우저에서 직접 확인해 보겠습니다.ctrl + alt + shift + b => D를 누르거나 Boot Dashboard => local => onedayboot[:8080] => (Re) Debug를 차례로 눌러 디버깅 모드로 서버를 시작합니다.브라우저에 http://localhost:8080/book/create 주소로 접속 후 임의의 데이터를 입력하고 저장 버튼을 클릭합니다.입력한 데이터가 잘 나오는지 확인합니다.http://localhost:8080/book/read/9999 등 존재하지 않는 PK로 접속해서 정상적으로 오류 페이지가 나오는지도 확인해 보세요.
책 정보가 없을 때 오류 페이지를 작성합니다. 오류 페이지는 컨트롤러에서 생성한 메시지를 보여주고, 컨트롤러에서 설정한 주소로 이동하게 됩니다.패키지 익스플로어에서 src/main/resources > templates 아래에 common.error 폴더를 만든 후 422.html 파일을 생성합니다. 이 파일은 컨트롤러를 막론하고 422 오류가 생성될 경우 무조건 호출될 공통 오류(common error) 뷰 파일이 됩니다.src/main/resources > templates.common.error > 422.html 이 코드가 html로 바뀌면 이렇게 보입니다.
책 컨트롤러에서 리턴한 상세 뷰를 작성하겠습니다.패키지 익스플로어에서 src/main/resources > templates.book 아래에 read.html 파일을 생성합니다.src/main/resources > templates.book > read.html 책 상세 제목 : 가격 : 입력일 : 컨트롤러에서 반환한 bookReadResponseDTO 데이터는 아래와 같다고 가정해 보겠습..
책 정보를 읽기 위한 컨트롤러 코드를 추가해 봅시다.src/main/java > com.yse.dev.book > BookController.java@GetMapping("/book/read/{bookId}") public ModelAndView read(@PathVariable Integer bookId) { ModelAndView mav = new ModelAndView(); try { BookReadResponseDTO bookReadResponseDTO = this.bookService.read(bookId); mav.addObject("bookReadResponseDTO", bookReadResponseDTO); mav.setV..
이제 비즈니스 로직이 존재하는 서비스 클래스를 살펴보겠습니다. read 메소드를 추가해 주세요.src/main/java > com.yse.dev.book.service > BookService.javaCopypublic BookReadResponseDTO read(Integer bookId) throws NoSuchElementException { Book book = this.bookRepository.findById(bookId).orElseThrow(); BookReadResponseDTO bookReadResponseDTO = new BookReadResponseDTO(); bookReadResponseDTO.fromBook(book); return bookRe..
책 엔티티 클래스에 @NoArgsConstructor 어노테이션과 @AllArgsConstructor 어노테이션 2개가 더 필요합니다.src/main/java > com.yse.dev.book.entity > Book.java@Builder @NoArgsConstructor @AllArgsConstructor public class Book { 각각의 네임스페이스는 lombok.NoArgsConstructor, lombok.AllArgsConstructor 입니다.