글쓰기

카테고리 없음

[3] 포트폴리오 실습

RSpring41 2021. 9. 23. 17:39
 

[2] 포트폴리오 실습

포트폴리오 사이트 실습 시작! 저번에 만들었던 로그인 기능에 추가로 내 포트폴리오를 보여주는 웹 사이트를 만들고 싶어져서 만들기 시작했다!! 아래는 github주소이다. 갑자기 진도가 많이 나

rspring41.tistory.com

저번 편에 이어서 이번에는 DB(My-sql)하고 연동하여 img를 출력하는 페이지를 통합하려고 한다.

현재 페이지 경로 구성

 

현재는 하나에 포트폴리오 페이지에 1개에 jsp파일을 생성하고 출력하였는데 이것을 통합하여 하나에 페에지로 만들어 보려고 한다.

 

먼저 DB에서 예전에 테이블을 만들고 이미지 경로를 저장해야 한다.

'ERD Cloud'를 이요하면 쉽게 구성해볼 수 있다.

간단하게 구성해본 DB구조

 

실제로 정보를 저장 한다고 하면 포트폴리오 목록에 더 많은 정보가 들어가야 하지만 간단하게 이미지를 불러오는 실습이므로 필요한 부분만 간단하게 구성해 보았다.

 

다음으로 실제 DB에 테이블을 생성해보자

'ERD Cloud'를 이용하면 GUI환경에서 구성했던 테이블 관계, 제약조건 등등 설정등을 코드로 복사할 수 있다는 장점이 있다.

 

(오류난 코드!! 아래 참고)

CREATE TABLE portfolio_img_list (
	Key	VARCHAR(255)	NOT NULL,
	main_num	number	NOT NULL,
	img_path	varchar(30)	NULL
);

CREATE TABLE portfolio_list (
	main_num	number	NOT NULL,
	title	varchar(20)	NULL
);

ALTER TABLE portfolio_img_list ADD CONSTRAINT PK_PORTFOLIO_IMG_LIST PRIMARY KEY (
	Key,
	main_num
);

ALTER TABLE portfolio_list ADD CONSTRAINT PK_PORTFOLIO_LIST PRIMARY KEY (
	main_num
);

ALTER TABLE portfolio_img_list ADD CONSTRAINT FK_portfolio_list_TO_portfolio_img_list_1 FOREIGN KEY (
	main_num
)
REFERENCES portfolio_list (
	main_num
);

 

간단하게 PK와 FK제약조건만 넣었다.

 

하! 지! 만! 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL'

 

오류....

 

야야야야!!! 

봐보면  'NOT NULL'에 문법 오류가 있다는거 같은데 My-sql에 버전에 따라서 구문이 달라서 오류가 발생한것 같다.

 

- 원인 및 해결

Oracle하고 햇갈렷다..  number가 아니고 int를 써야 하며 데이터 크기를 지정 해줘야 한다. 

 

테이블에 데이터 형태를 수정했다.

 

아래는 수정한 코드

DROP TABLE portfolio_img_list;

CREATE TABLE portfolio_img_list (
	PKey	int(100)	NOT NULL  AUTO_INCREMENT PRIMARY KEY,
	main_num	int(10)	NOT NULL,
	img_path	varchar(30)	NULL
);

DROP TABLE portfolio_list;

CREATE TABLE portfolio_list (
	main_num	int(10)	NOT NULL AUTO_INCREMENT PRIMARY KEY,
	title	varchar(20)	NULL
);

ALTER TABLE portfolio_img_list ADD CONSTRAINT PK_PORTFOLIO_IMG_LIST PRIMARY KEY (
	PKey,
	main_num
);

ALTER TABLE portfolio_list ADD CONSTRAINT PK_PORTFOLIO_LIST PRIMARY KEY (
	main_num
);

ALTER TABLE portfolio_img_list ADD CONSTRAINT FK_portfolio_list_TO_portfolio_img_list_1 FOREIGN KEY (
	main_num
)
REFERENCES portfolio_list (
	main_num
);

정상적으로 테이블이 생성 되었고 구조도 확인 했다.

DB에 테이블 생성

 

테스트용 데이터를 집어 넣어보겠다.

하나씩 sql문을 입력해서 넣을 수도 있고 프로그램을 이용하여 간단하게 넣을수도 있다.

 

나는 이클립스를 이용하여 넣어보았다.

테스트 데이터 입력

 

img 테이블에 데이터를 넣으면서 확인 생각해봤는데 이미지에 순서를 정해줄수 있는 컬럼이 없어서 순서가 뒤죽박죽으로 나올거 같은데.......

생각해보니 시퀀스 번호를 순서대로 나열하면 되겠다! 하지만 나중에 수정하거나 한다면 전체를 지우고 다시 입력해야 할 것이다. 지금은 수정할 생각이 없으니 그대로 진행 하겠다.

 

 

데이터가 DB에 있으니 이것을 조회하는 쿼리문을 작성 해야한다.

mapper랑 VO설정이랑 해주고 테스트 해보니 정상적으로 출력 된다!!

 

이제 각 게시글마다 이미지 경로를 불러와서 슬라이드 할수 있게 구현해야 한다.

게시글 목록을 불러왔던 것과 동일하게 쿼리문도 적고 VO도 만들고 설정도 추가 해주고 해서 만들어 보겠다.

 

 

 

 

 

중간 점검 

일단 문제가 발생했다.

 

DB에서 읽어온 이미지 경로를 이용하여 이미지를 출력하면 

이미지 슬라이드 위를 덮어버린다...