- 프로젝트 파일&동영상 제출
- memo.txt에 sql문과 시작 파일 기재
[ 오류 해결 ]
01.
- 오류 내용 : sql plus에서 TNS:프로토콜 어댑터 오류
- 오류 해결 : 노트북이 윈도우 업데이트를 안 한지 오래되어 업데이트를 했더니 작업을 들어가기도 전에 오류 발생. (오히려 다행인 것 같다. 모든 테이블이 지워져있다.😒) database configuration assistant 실행하여 다시 데이터베이스를 생성해준다. 중간에 무언가 적는 단계에서는 패스워드만 적고 컨테이너 데이터베이스로 생성을 해제해주고 넘어가면 된다. 만약 같은 파일이 있다는 오류 발생 시 오류 메세지에 표기된 경로에서 해당 파일 삭제 후 재시도 하면 해결!
02.
- 오류 내용 : The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
- 오류 해결 : 자바 버전 문제. 자바 다른 버전을 설치 후 빌드 패스 ->라이브러리 추가-> JRE SYSTEM LIBLARY-> search로 설치한 자바 폴더를 추가하고 해당 자바를 추가해준다. 오류난 버전 11, 변경 버전 17
03.
- 오류 내용 : The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
- 오류 해결 : 이것저것 해결을 해보았지만, 전혀 해결이 되지않았다. 확인해보니 다른 블로그 글들에서 언급되는 파일이 내가 가진 것과 달랐고, 결국 오라클을 삭제 후 재설치 해보기로 했다. 나는 수동으로 모두 삭제했지만 인스톨러로도 쉽게 삭제가 가능한 것 같다. 다시 설치 후 확인해보니 파일에 빠져있던 부분이 정상적으로 들어와있는 걸 확인할 수 있었다!
04.
- 오류 내용 : jsp org.apache.catalina.core.StandardWrapperValve invoke
- 오류 해결 : 이 오류가 3을 해결하고 나서 바로 났다. 이유는 바로 지난번에 미처 교체하지 못한 깨진 jar파일이 있었기 때문.... 깨진 파일을 교체하니 이 오류는 더이상 뜨지 않았다!
05.
- 오류 내용 : 콘솔창 한글 깨짐
- 오류 해결 : 이전에 기록해둔 방법과 검색으로 찾은 방법 모두 적용해도 해결되지 않음..
+0407 : 해결완!!!! 콘솔창 탓이 아니라 파라미터 값을 한글로 변환하는 구문이 값을 받아오는 구문보다 아래에 있어서 한글변환이 제대로 이루어지지 않아 생긴 문제였다. 이렇게 간단한 문제였다니... 진짜 잊히지 않을 것 같다😂
06.
- 오류 내용 : 라디오 객체의 유효성 검사 적용 안됨
- 오류 해결 : 유효성 검사 시 if문의 조건을 radio.val() == ""이 아닌 radio.val() == undefined 로 해주어야 한다!
+ 해당 조건문을 이용하지 않고 checked 속성으로 해결.
07.
- 오류 내용 : 오류메세지는 안 뜨는데 multipartrequest 이전 항목만 출력됨.
- 오류 해결 : 해당 객체를 사용하려면 파일을 업로드하는 폼에 enctype="multipart/form-data" 속성을 넣어주어야한다.
08.
- 오류 내용 : 파일의 value 속성 적용 안됨
- 오류 해결 : 불가능! 보안 상의 이유로 불가능하다고 한다.
🐈 00. 개발절차 / 주제선정
이번에는 웹 사이트를 구축하는 개인 프로젝트이므로 실제 실무에서 활용할만한 주제로 정하기로 했다.
이번에 배운 것들을 응용하기 좋게 관리자/사용자/판매자 권한을 나눌 수 있는
그림 판매/구매 사이트를 만들어보고자 한다.

🐈 01. 요구 분석
[ 구현하고 싶은 기능 ]
사이트의 권한을 관리자/판매자/구매자로 나누어 각 권한에 따라 구현하고 싶은 기능을 나누어보았다.
우선 필수적인 요소만 먼저 구축 후 프로젝트 잔여 기간에 맞추어 부가적인 기능은 추가 및 삭제하기로 한다.
00. 공통
- 홈( 상품 목록 인기순 5개/최신순 5개/이달의 작가)
- 회사소개
- 상품목록
- 로그인
- 회원가입(작가회원/일반회원)
01. 관리자
- 회원 관리(수정/삭제/관리자추가)
- 상품 관리(수정/삭제)
- 카테고리 관리(추가/수정/삭제)
- 태그 관리(추가/수정/삭제)
- 문의게시판 관리(답글등록/삭제)
02. 판매자
- 상품 관리(등록/수정/삭제)
- 문의게시판 작성/수정
- 내 정보 관리(닉네임/프로필사진/소개)
- 작가페이지(소개/상품목록)
03. 구매자
- 문의게시판(등록/수정/삭제)
- 상품 구매(장바구니/관심작가등록)
- 후기 작성/수정/삭제
- 주문내역 확인
- 내 정보 관리(닉네임/프로필사진)
[ 화면 레이아웃 ]
- 무료 부트스트랩 템플릿 활용
https://startbootstrap.com/previews/modern-business
https://startbootstrap.com/template/shop-homepage
🐈 02. 설계
- DB 구조 설계
회원 테이블(번호, 닉네임, 아이디, 패스워드, 회원종류, 프로필사진, 소개글)
카테고리 테이블(번호, 카테고리)
상품 테이블(번호, 제목, 작가명, 카테고리, 옵션번호, 그림샘플번호, 내용, 썸네일, 작업 중인 슬롯, 전체 슬롯)
주문 테이블(번호, 회원번호, 상품번호, 상품타입)
게시판 테이블(번호, 제목, 아이디, 이메일, 비밀번호, 날짜, 조회수, 내용, 리플, 리스텝, 리레벨 )
- 전체적인 흐름 그림

* 이미지 첨부 시 참고 : https://blog.naver.com/yl9517/222494576711
🐈 03. 구현
- DB구현
* sql문
--시작 : ARTSHOP_MAIN.jsp
--SQL :
//회원 테이블
drop sequence artshop_memseq;
create sequence artshop_memseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_member;
create table artshop_member(
memnum number primary key,
memid varchar2(20),
mempw varchar2(20),
memname varchar2(12),
memnick varchar2(20),
memrrn1 varchar2(10),
memrrn2 varchar2(10),
memkind varchar(10),
mempic varchar(20),
mempr varchar(150)
);
insert into artshop_member
(memnum, memid, mempw, memname, memnick,
memrrn1, memrrn2, memkind)
values(artshop_memseq.nextval, 'admin', '1234',
'관리자', '세월', '970404', '4333333', '운영');
insert into artshop_member
values(artshop_memseq.nextval, 'art', '1111',
'김아트', '아트', '970505', '4444444', '작가',
'profile001.png', '동화 삽화 프리랜서 아트입니다!');
insert into artshop_member
(memnum, memid, mempw, memname, memnick,
memrrn1, memrrn2, memkind, mempic)
values(artshop_memseq.nextval, 'client', '2222',
'김고객', '고고', '970606', '5555555', '일반',
'profile002.png');
//카테고리 테이블
drop sequence artshop_catseq;
create sequence artshop_catseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_category;
create table artshop_category(
catnum number primary key,
catname varchar2(20)
);
insert into artshop_category
values(artshop_catseq.nextval, '(커미션)SD');
insert into artshop_category
values(artshop_catseq.nextval, '(커미션)MD');
insert into artshop_category
values(artshop_catseq.nextval, '(커미션)LD');
insert into artshop_category
values(artshop_catseq.nextval, '(커미션)VIRTUAL');
insert into artshop_category
values(artshop_catseq.nextval, '(외주)SD');
insert into artshop_category
values(artshop_catseq.nextval, '(외주)MD');
insert into artshop_category
values(artshop_catseq.nextval, '(외주)LD');
insert into artshop_category
values(artshop_catseq.nextval, '(외주)VIRTUAL');
//상품 테이블
drop sequence artshop_proseq;
create sequence artshop_proseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_product;
create table artshop_product(
pronum number primary key,
prosub varchar2(100),
prowri varchar2(20),
procat varchar2(20),
procon varchar2(200),
propri number,
proingslot number,
proallslot number
);
insert into artshop_product
values(artshop_proseq.nextval, '동화느낌의 심플 삽화 커미션',
'아트', '(커미션)MD',
'따뜻한 동화 삽화 느낌의 그림이 주력인 작가 아트입니다.<br>작업기간은 최소 일주일, 최대 2주입니다.',
2, 5, 25000);
//샘플 테이블
drop sequence artshop_samseq;
create sequence artshop_samseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_sample;
create table artshop_sample(
samnum number primary key,
samimg varchar2(20),
samloc varchar2(20),
pronum number
);
insert into artshop_sample
values(artshop_samseq.nextval, 'sample001.png',
'/MYARTSHOP/IMAGES',1);
insert into artshop_sample
values(artshop_samseq.nextval, 'sample002.png',
'/MYARTSHOP/IMAGES',1);
insert into artshop_sample
values(artshop_samseq.nextval, 'sample003.png',
'/MYARTSHOP/IMAGES',1);
//옵션 테이블
drop sequence artshop_opseq;
create sequence artshop_opseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_option;
create table artshop_option(
opnum number primary key,
pronum number,
opname varchar2(20),
oppri number
);
insert into artshop_option
values(artshop_opseq.nextval, 1, '소품추가', 3000);
insert into artshop_option
values(artshop_opseq.nextval, 1, '배경추가', 5000);
insert into artshop_option
values(artshop_opseq.nextval, 1, '인물추가', 15000);
//주문 테이블
drop sequence artshop_ordseq;
create sequence artshop_ordseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_order;
create table artshop_order(
ordnum number primary key,
memnum number,
pronum number,
ordqty number,
ordpri number,
ordstat varchar2(10)
);
insert into artshop_order
values(artshop_ordseq.nextval, 3, 1, 1, 28000,'대기');
//문의게시판 테이블
drop sequence artshop_boaseq;
create sequence artshop_boaseq
increment by 1
start with 1
minvalue 0
maxvalue 10000
nocache;
drop table artshop_board;
create table artshop_board(
boanum number primary key,
boasub varchar2(150),
boaid varchar2(20),
boaemail varchar2(20),
boapw varchar2(20),
boadate varchar2(20) default sysdate,
boacon varchar2(200),
boaread number,
boaref number,
boare_step number,
boare_level number
);
insert into artshop_board
values(artshop_boaseq.nextval, '주문 취소 문의합니다',
'client', 'client@naver.com', '3333', '2023-04-06',
'주문한 거 취소 부탁드려요.',0,0,0,0);
🐈 04. 완성 후 검토
2주라는 시간 동안 할 수 있는 게 생각보다는 적어서 원래 계획보다 축소되긴 했지만,
주요 기능들은 거의 구현할 수 있었다!
도움없이 내가 생각하는 대로 코드를 짜고 시도하며 코드를 짜맞추는 과정은 언제나 짜릿하다😎
샘플기능과 옵션 기능을 넣지 못해 아쉽지만 차차 더 배워가며 구현할 수 있는 능력을 갖추고 싶다.




