20/10/30 11. [보류] 글작성 화면, 상세페이지 화면.

 


7. 글 작성 화면

1. 입력받지 않고 자동으로 채워넣어지는 항목들(글번호, 주문번호,  상품아이디)

    →7-1.주문번호는 필요없으므로 삭제해도된다.

1-1. 화면에 보이지 않아도 되는 항목들

1) 글번호 : 게시글 정렬 순서에만 필요하다.

    →ㄱ.자동으로 입력되는 항목 어떻게 하는지 로직이 기억 안나므로 찾아야한다.

▶ hidden으로 넘긴다

2) 상품아이디 : 해당 상품의 상세 페이지로 이동해야한다.

    →ㄱ. 카테고리 개념인데 어떻게 구현해야할지 모르겠음 강사님께 조언을 구한다.

▶해당 상품의 상세 페이지의 후기 섹션에서 select하여 뿌려준다.

2. 입력받는 항목들(사용자아이디, 글제목, 글내용, 글비밀번호, 첨부이미지)

→ 7-1. db에 첨부이미지 항목이 누락되었으므로 필드 추가한다.

 

7-1. db수정

7-1.주문번호는 필요없으므로 삭제해도된다.

7-1. db에 첨부이미지 항목이 누락되었으므로 필드 추가한다.

▶ 테이블 백업

create table aft_board2 as select * from aft_board;

▶ 기존 레코드 삭제

delete from aft_board where aft_num=1;

▶ order_no 필드 드롭

alter table aft_board drop column order_no cascade;

▷   데이터베이스: 10g 출시 1

오류 코드: ORA-12991

설명: 열이 다중-열 제약 조겅에 참조되었습니다

원인: 일부 제한 조건에서 참조하는 열을 삭제하려고했습니다.

조치: 삭제 된 열을 참조하는 모든 제한 조건을 삭제하거나 명령문에 CASCADE CONSTRAINTS를 지정하십시오.

https://www.oraexcel.com/database-oracle-10gR1-ORA-12991/lang-ko

 

▷ 참조 중이어서 삭제가 안되므로 원 테이블에서

1)주문테이블의 레코드를 삭제하고

delete from f_order where order_no=100;

2)주문테이블에서 주문번호필드를 삭제한뒤

alter table f_order drop column order_no;

▷ORA-12992: 부모 키 열을 삭제할 수 없습니다

 

부모 테이블이 aft_board 였던건가?

3)후기게시판에서 주문번호필드를 삭제하고

alter table aft_board drop column order_no cascade constraints; 실행해봄

이럴수가 ㅠㅠ

잘 정리된 것을 볼 수 있다.

4)주문테이블에서 주문번호필드를 추가해야하고

 

5)주문테이블에서 레코드를 다시 추가해야한다.

insert into f_order values(100,'test1','Sf','20/12/25',2,0,sysdate);

 

5)후기테이블에서 레코드를 다시 추가해야한다.

insert into aft_board values(1, 'test1', 'Sf', '예쁜 꽃이네요', '정말 예쁜 꽃이 와서 기분이 좋아요', sysdate, 1111);

6) commit

7) db 자료들 수정 https://www.evernote.com/l/AuQuaRUJig1IKZ8_R7fkbfL1Arv7256gkV4/

 

 

▶ aft_img 필드 추가 varchar2(100) Null

alter table aft_board add aft_img varchar2(100) Null;

▶ desc aft_board;

 

▶ 레코드 추가

insert into aft_board values(1, 'test1', 'Sf', '예쁜 꽃이네요', '정말 예쁜 꽃이 와서 기분이 좋아요', sysdate, 1111, 'C:\webtest\0.project\image\후기\1.jpeg');

*aft_img 필드가 추가되어있음


 

오더카드에서 후기작성 버튼을 누르면, 글쓰기 창으로 이동하고 확인을 누르면 db에 저장된다.

db에 저장되면 해당 상품의 상세 페이지의 후기 섹션에서 select하여 뿌려준다.

 

글목록리스트가 > 오더카드로 바뀌어야한다.

1) 오더카드 jsp 구현

▶db에서 order_no, prd_id, order_takedate, order_cycle, order_cancle, order_buydate를 가져와서 뿌려준다.

▶ 후기작성 버튼을 누를 경우 

▶ 구독취소 버튼을 누를 경우 db에서 drop 하는 sql 구문을 가진 메서드를 실행한다.

2) 

 

1.

small size 상품의 상세페이지에서 prd 테이블의 정보를 뿌린다.

2.

구매 버튼을 누르면 form의 입력값이 전송되며 오더 테이블에 레코드가 추가된다.

주문번호 101 (랜덤으로 부여됨)

아이디 test1 

상품 아이디 Sf(1.에서 가져온다.)

최초수령 20/12/25

구독주기 2주

주문취소여부 0

구매일자 sysdate

 

3. 카트로 페이지 이동하며, 오더 카드에 오더 테이블의 레코드를 주문번호를 사용하여 뿌려준다.

where order_no=101

 

아 너무 복잡해서 모르겠다. 일단 상세페이지의 값을 뿌려주는 것부터 시작하자.


 

8. 상세페이지 뿌려주기

db내용 메모

1) index.jsp를 새로 만들어서 상품 상세페이지 요청하는 요청명령어 등록

2) web.xml 할일없음

3) board-servlet.xml에서 요청명령어에 따라 처리해주는 DetailActionController 설정

4) DetailActionController 제작

ㄱ. 어노테이션 @Controller, @Autowired(Board dao), @RequestMapping("/detail.do") 설정

ㄴ. dao의 내용을 list에 담아옴

ㄷ. modelandView를 통해 전달

ㄹ. return함

5) detail.jsp 에서 뿌려줌

ㄱ. list를 getAttriube 하여 받아옴

ㄴ. while문을 통해 dto의 내용을 받아옴

ㄷ. getter메서드로 가져옴

ㄹ. jsp에 뿌려줌

6) dataAccessContext-local.xml 할 일 없음

7) SqlMapConfig.xml 할 일 없음

8.) Board.xml

ㄱ. select * from prd where prd_id=Sf

9) DTO BoardCommand................... DetailCommand 로 새로 만듦

ㄱ. prd 테이블의 필드에 맞춰 멤버변수 작성한 뒤 setter getter 작성

10) DetailDAO interface 작성

ㄱ.Board.xml에서 id값을 준대로 메서드명 작성

ㄴ.SQL구문의 반환값 유무에 따라 void 여부 결정

11) interface를 상속받은 SqlMapDetailDao작성 (역할 : Board.xml에 적힌 sql 구문을 실행함)