게시판을 만들기 웹 프로젝트를 하면서 가장 기본적으로 배우게 되는 내용이며, 여러가지 설정과 기법을 통해 구현을 할 수 있습니다.
1. 데이터베이스 테이블 생성
각각의 데이터베이스가 존재하며 , 해당 글에서는 Oracle 11G ORCL을 통하여 작성하게 되었습니다.
테이블 생성
CREATE TABLE TB_BOARD(
TB_IDX number primary key, -- 게시글에 대한 고유값
TB_TITLE varchar2(30), -- 게시글 제목
TB_CONTENTS varchar2(100), -- 게시글 내용
TB_CONTENT_CNT number(1), -- 게시글 조회 수
TB_DEL_GB char(1), -- 삭제여부
TB_WRITE_DTM Date, -- 게시글 작성일
TB_WRITE_ID varchar2(10) -- 게시글 작성자
);
2. SQLDeveloper 를 통한 테이블 확인
데이터 베이스 툴을 통하여 아래와 같이 정상적으로 생성된 것을 확인 할 수 있습니다.
3. 게시글 중복 방지를 위한 시퀀스 생성
게시글의 중복 방지를 위하여 오라클에서 제공하는 시퀀스를 생성합니다. 이는 TB_IDX에 사용할 예정입니다.
시퀀스 생성
CREATE SEQUENCE SEQ_TB_BOARD_IDX;
4. 샘플 데이터의 추가
아래와 같이 테이블 컬럼에 맞는 데이터 타입을 기재하여 삽입 할 수 있습니다.
정상적으로 삽입되었다면 데이터 탭을 통해 확인 할 수 있습니다.
INSERT INTO TB_BOARD VALUES(1,'테스트1','내용입니다',0,'N',SYSDATE,'KYLE');
INSERT INTO TB_BOARD VALUES(2,'테스트2','내용입니다',0,'N',SYSDATE,'KYLE');
INSERT INTO TB_BOARD VALUES(3,'테스트3','내용입니다',0,'N',SYSDATE,'KYLE');
INSERT INTO TB_BOARD VALUES(4,'테스트4','내용입니다',0,'N',SYSDATE,'KYLE');
COMMIT;
5. 구현의 진행 순서
Spring은 아래와 같이 데이터 전달이 진행 됩니다.
Controller > Service(ServiceImpl ) > DAO > SQL(XML) > Controller > JSP
6. Controller 구현
클래스 상단에 @Controller를 선언함으로 스프링컨테이너가 실행될때 컨트롤러로 인식하게 만들 수 있습니다.
해당 프로젝트가 실행시 , index.jsp > Controller(callBoardList) > boardList.jsp 로 이동됩니다.
ModelAndView 는 화면에 보여줄 jsp파일 경로와 함께 전달할 Object를 선언하여 전달 합니다.
Object는 비즈니스 로직이 담긴 Service를 호출하고 화면으로 이동 시킵니다.
7. Service 구현
비즈니스 로직을 담당하며, 클래스 상단에 @Service 를 선언함으로 스프링컨테이너가 실행될때 서비스로 인식하게 만들 수 있습니다.
Service는 두개의 파일로 구성되어 있습니다. 어떤 작업을 진행 할 것인지 ( Service Interface ) , Interface의 내용을 실제로 구현시킬 (ServiceImpl) 입니다.
Board Service가 가지는 기능 명세서 ( 인터페이스 )
기능을 작성한 인터페이스를 implements 를 통하여 상속받으며 @Override를 통해 재정의 해 사용 합니다.
8. DAO 구현
데이터베이스 접근을 담당하며, 클래스 상단에 @Repository 를 선언함으로 스프링컨테이너가 실행될때 저장소로 인식하게 만들 수 있습니다. 또한 BoardDAO에서 직접 쿼리를 호출할 수도 있지만, 이전에 작성해둔 AbstractDAO (공통 DAO)를 상속받음으로써 만들어둔 메서드를 사용할 수 있습니다.
extends 는 implements 와 달리 오버라이딩을 할 필요가 없습니다.
9. AbstractDAO 호출
BoardDAO 에서 selectBoardList 를 담아 AbstractDAO 의 붉은 네모 표기된 쿼리를 실행합니다.
10. SQL 호출
AbstractDAO 의 queryId를 통해 iBatis.xml 의 id를 찾습니다. 이후 그 안의 쿼리를 반환 합니다.
11. 화면 구현
마지막으로 사용자에게 보여줄 화면을 구성하는 일이 남았습니다.
컨트롤러에 선언한 /board/boardList가 core-servlet 의 InternalResourceViewResolver 을 통하여 화면을 호출 합니다.
비즈니스 로직을 통해 담긴 값은 mv.addObject("list",list); 를통하여 화면에서 아래와 같이 호출 할 수 있습니다.
위와 같이 모두 구현을 완료하였다면 , 프로젝트를 실행 후 정상적으로 출력되는지 확인할 수 있습니다.
설정만 진행하다 실제 구현이 되니 조금 헷갈리는 부분도 많고.. 계속 오류가 발생해 당황스럽기도하다.
'Web Programming > Project' 카테고리의 다른 글
[게시판 만들기] 3-7. Spring 게시판 등록 및 상세화면 만들기 (0) | 2020.05.02 |
---|---|
[게시판 만들기] 3-6. Spring 게시판을 위한 HandlerMethodArgumentResolver (0) | 2020.04.24 |
[게시판 만들기] 3-4. Spring 게시판을 위한 iBatis 와 Oracle연동 (0) | 2020.04.19 |
[게시판 만들기] 3-3. Spring 게시판을 위한 Log4j2 와 Interceptor (0) | 2020.04.15 |
[게시판 만들기] 3-2. Spring 게시판을 위한 web.xml 설명 (0) | 2020.04.14 |