Spring & Springboot 68

@Configuration와 BeanPropertyRowMapper

@Configuration 이전 6장에서 스프링 설정 파일을 애너테이션(@Configuration, @Bean)을 이용한 Java 파일로 만들었다. 도서 대출 서비스도 @Configuration과 @Bean을 이용해서 빈을 생성하고 조립해본다. JdbcTemplate 데이터베이스 통신에 필요한 JdbcTemplate을 @Configuration과 @Bean을 이용해서 IoC 컨테이너에 빈으로 생성하는 과정이다. ① com.office.library.config 패키지에 JdbcTemplateConfig.java 클래스를 만들고 @Configuration을 명시한다. JdbcTemplate 빈을 생성하기 위한 코드는 다음과 같다. package com.office.library.config; import ..

프로퍼티란?

프로퍼티의 개념 ⭐ 완성된 프로그램을 배포하기 전에 개발자는 고려해야할 사항⭐ 프로그램을 개발할 때 데이터베이스를 개발에 사용하는 것과 실제 서비스에 사용하는 것으로 이원화하는 것이다. 💡이렇게 데이터베이스를 이원화하는 이유? 서비스DB의 데이터는 사용자의 중요한 데이터이기 때문에 개발자가 개발 또는 테스트의 목적으로 사용해서는 안되기 때문이다. 데이터베이스를 이원화한다면 프로그램 코드에도 변화가 있어야한다. 개발 시점에는 개발 DB에 접속해야 하지만, 프로그램을 배포할 때는 서비스DB에 접속할 수 있도록 데이터베이스의 주소, 이름, 계정 정보 등을 변경해서 배포해야 하기 때문이다. 다음은 데이터베이스 접속 정보가 명시되어 있는 jdbc-context.xml이다. jdbc:mariadb://127.0.0..

전자 도서관 프로젝트 - 전자 도서 목록 조회 구현

관리자가 도서관에 등록된 전체 도서를 조회하는 기능이다. '전체도서' 메뉴는 'nav.jsp'에 있다. 전체도서 컨트롤러 기능 구현 // 전체 도서 목록 @GetMapping("/getAllBooks") public String getAllBooks(Model model) { System.out.println("[BookController] getAllBooks()"); String nextPage = "admin/book/full_list_of_books"; List bookVos = bookService.getAllBooks(); model.addAttribute("bookVos", bookVos); return nextPage; } 서비스 기능 구현 public List getAllBooks(){ ..

전자 도서관 프로젝트 - 희망 도서 요청 기능 구현

도서관에 내가 원하는 도서가 없을 때 도서 입고를 요청하는 희망 도서 요청 기능을 구현한다. 구현해야 할 기능은 희망 도서 요청과 희망 도서 요청 목록 조회 그리고 관리자의 희망 도서 요청 처리(신규 도서 입고)이다. 희망 도서 요청 화면 구현하기 은 '나의책장'에서 이용할 수 있다. 희망 도서 요청은 bookshelf.jsp에 있다. 희망 도서 요청 컨트롤러 기능 구현 requestHopeBookForm()은 서비스 또는 DAO를 사용하지 않고 희망 도서를 요청하는 화면으로 이동한다. 단, 로그인 인증을 위해서는 servlet-context.xml의 인터셉터에 등록해야 한다. // 희망 도서 요청 @GetMapping("/requestHopeBookForm") public String requestHo..

전자 도서관 프로젝트 - 대출 도서 반납 기능 구현

대출 도서 반납 처리하기 도서 반납 처리는 관리자의 업무이기 때문에 관리자 화면으로 이동한 후 로그인한다. 도서 반납은 '대출도서' 메뉴를 이용한다. '대출도서' 메뉴는 nav.jsp에 있다. 도서등록 컨트롤러 기능 구현 클라이언트의 요청을 처리할 수 있는 메서드를 com.office.library.book.admin 패키지의 BookController에 선언한다. // 도서 대출 목록 @GetMapping("/getRentalBooks") public String getRentalBooks(Model model) { System.out.println("[BookController] getRentalBooks()"); String nextPage = "admin/book/rental_books"; Lis..

전자 도서관 프로젝트 - 도서 대출 기능 구현

도서 대출 처리하기 도서 상세 화면에서 버튼을 클릭하면 도서 대출 페이지로 넘어갈 수 있다. 다음은 도서 상세 화면(book_detail.jsp)의 도서 대출 코드이다. 대출중 도서 대출 을 클릭하면 /book/user/rentalBookConfirm 요청이 발생하는데, 이때 매개변수로 도서를 구분할 수 있는 b_no와 함께 서버에 전달한다. 컨트롤러 기능 구현 클라이언트 요청을 처리하는 rentalBookConfirm()을 BookController에 다음과 같이 코딩한다. // 도서 대출 @GetMapping("/rentalBookConfirm") public String rentalBookConfirm(@RequestParam("b_no") int b_no, HttpSession session) {..

전자 도서관 프로젝트 - 도서 검색 기능 구현

도서 검색 처리하기 도서 검색은 도서 검색 창과 동일하다. 도서 검색 화면은 nav.jsp에 있다. · 서버에서 요청하는 URI는 /book/user/searchBookConfirm · 검색어는 b_name으로 서버에 전송된다. 컨트롤러 기능 구현 클라이언트 요청을 처리할 수 있는 메서드를 BookController.java에 선언한다. package com.office.library.book.user; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Mode..

전자 도서관 프로젝트 - 도서 대출 관련 기능 구현을 위한 준비

도서관을 이용한느 사용자가 도서를 대출하는 기능을 구현한다. 패키지와 클래스 생성하기 실습에 필요한 패키지와 클래스를 만들고 데이터베이스에 도서 대출 테이블(tbl_rental_book)도 생성해본다. com.office.library.book.user 패키지와 클래스를 다음과 같이 만든다. ※ BookVo는 com.office.library.book 패키지에 관리자와 사용자 공용으로 사용하고 있어 별도로 생성하지 않는다. 빈 충돌 에러 앞에서 생성한 클래스들을 스프링 IoC 컨테이너에 빈으로 등록하기 위한 설정을 한다. package com.office.library.book.user; import org.springframework.stereotype.Controller; import org.spri..

전자 도서관 프로젝트 - 비밀번호 분실 처리 구현

비밀번호 찾기 화면으로 이동 버튼은 로그인 화면(login_form.jsp)에 있다. find password 비밀번호를 찾는 버튼은 /user/member/findPasswordForm에 링크되어 있으므로 UserMemberController 컨트롤러에 메서드를 만들고 매핑한다. // 비밀번호 찾기 @GetMapping("/findPasswordForm") public String findPasswordForm() { System.out.println("[UserMemberController] findPasswordForm()"); String nextPage = "user/member/find_password_form"; return nextPage; } 비밀번호 찾기 비밀번호 찾기 화면은 find_..

전자 도서관 프로젝트 - 로그인 및 로그아웃 구현

로그인 화면으로 이동 '로그인' 메뉴도 '회원가입' 메뉴와 마찬가지로 nav.jsp에 코딩되어 있다. 로그인 '로그인' 메뉴가 /user/member/loginForm에 링크되어 있으므로 UserMemberController에 loginForm()을 만들고 매핑한다. // 로그인 @GetMapping("/loginForm") public String loginForm() { System.out.println("[UserMemberController] loginForm()"); String nextPage = "user/member/login_form"; return nextPage; } 로그인 처리하기 로그인 화면은 login_form.jsp로 로그인 양식과 관련된 코드는 다음과 같다. · 로그인 정보가..