쇼핑몰 프로젝트 - 상품 등록 시 처리

myminimin·2023년 9월 1일
0

Spring/Springboot

목록 보기
11/21
post-custom-banner

실행 결과

  • admin으로 로그인하여 관리자 -> 상품 등록하기 -> 상품정보 입력 -> 상품 이미지 등록 -> 상품 등록하기

  • 메인 화면에 신간 등록까지 확인

  • 상품 등록 페이지(addNewGoodForm.jsp)에서 상품을 등록할 때
    1-1. 이미지가 첨부가 되었는지를 먼저 확인(fnadd_new_goods()),
    1-2. 첨부되어있으면(_fn_addFile()
    ) 메인 이미지는 main_image, 그외의 이미지는 detail_image+cnt 로 설정.

-> 등록하기 버튼 누르면 'addNewGoods.do' 로 전송

  • 컨트롤러인 AdminGoodsControllerImpladdNewGoods() 에서 multipartRequest를 전달 받음. (위의 form을 보면 method="post" enctype="multipart/form-data" 이 부분이 파일 첨부해서 보낸다는 듯)

컨트롤러에서는 상품 정보와 이미지 정보등을 통해서 DB에 업로드 해야하는데 jsp에서는 클라이언트가 입력한 값들 + 이미지 파일 + 이미지 파일의 이름 속성 정도만 넘어왔는데 어떻게 등록을 하나.... 싶지만

AdminGoodsControllerImpl는 일반 클래스 BaseController를 상속받고 인터페이스
AdminGoodsController를 구현한다.

A extends B = A는 B를 상속해 +a 기능 사용한다 (calss 상속)
A implement B = A는 B의 모든 기능을 사용 해야함 (interface 상속)

BaseController에 있는 upload()의 기능만 추가로 사용하면서 AdminGoodsController의 모든 기능을 재정의해야한다. (위에서 사용한 addNewGoods()도 AdminGoodsController의 기능이다)


(BaseController - upload())

그리고 AdminGoodsService에서 의존성을 주입받아 해당 서비스의 메서드를 호출하여 관련 기능을 사용할 수 있다!


(AdminGoodService - addNewGoods())

여러 계층에서의 재사용과 의존성 주입을 통해 코드를 모듈화하고 유지보수하기 쉽게 만드는 것이 개발 패턴 중 하나이다!
1. Controller : 웹 요청을 처리하고 비즈니스 로직을 호출 'AdminGoodsControllerImpl' 클래스가 이 역할을 수행한다.
2. Service : 비즈니스 로직을 구현하고, 데이터베이스 액세스나 다른 비즈니스 로직을 조합하여 작업을 수행한다. 'AdminGoodsServiceImpl' 클래스가 이 역할을 수행한다.
3. DAO(Data Access Object) : 데이터베이스와 상호 작용하는 역할을 한다. 'AdminGoodsDAOImpl' 클래스가 이 역할을 수행한다.

상속받고 구현하고 의존성을 주입받아서 ... 다양한 기능들을 끌어다 써 상품 번호의 폴더를 생성, 이미지 파일들을 추가가해서 addNewGoodForm.jsp 의 요청을 처리한 뒤 alert로 알림

  • 상품 번호/이미지 번호는 'admin_goods.xml'에서 시퀀스를 이용해서 가지고 온다!!

post-custom-banner

0개의 댓글