데이터 베이스를 기반으로 하는 프로그램들은

게시판만 잘 만들 줄 알아도 대부분의 개발은 되는 것으로 알고 있다.

모든 프로그램은 입력(INSERT), 수정(UPDATE), 삭제(DELETE), 조회(SELECT) 기능이 다양한 형태로 표현되는 것으로,

이러한 기능을 가장 간단하게 구현할 수 있는 것이 게시판 이라고 생각하기 때문이다.

따라서, 대단한 기술이 없이 단순 게시판만 잘 만들 줄 알아도 대부분의 프로그램을 문제 없이 만들 수 있다.

오히려 어설프게 아는 기술들을 적용해서 프로젝트를 망치는 경우를 매우 많이 봤다.

여기서는 게시판 만드는 과정을 단계별로 구성하여

보다 쉽고 깊이 있게 배울 수 있도록 시도하였다.

(게시판을 만들줄 알면 나머지는 프로세스에 따른 구현과 SQL 사용 능력인데 여기서는 다루지 않는다.)


본 게시판 예제는 Spring 4.1과 MyBatis 3.2를 기반으로 구성하였다.

Spring 4를 기반으로 제작했지만 

Spring 4의 특징들을 반영하지 않았기 때문에 Spring 3(전자정부 프레임)에서도 사용 가능하다.

다음 그림은 본 예제에서 사용한 Spring MVC 구조로 기본 구조보다 단순하게 구성하였다.   

Spring MVC에서는 DAO(mapper)와 Service interface(추상화)등의 구성이 더 구현되어야 한다.

하지만, 경험상 필요성을 느끼지 못하고 이러한 구조는 복잡성을 가중시킨다고 생각하여

본 예제에서는 다음 그림과 같이 단순화 하여 구성하였다.

즉, 추상화를 사용하지 않았고 DAO와 Servic를 합쳐서 Service로 사용하였다.


본 예제는 게시판을 개발하며 프로그래밍 하는 과정을 익히는 것으로

Spring과 MyBatis, MVC에 대하여 어는 정도 알고 있다는 전제로 진행되기 때문에

상세한 내용을 적지는 않을 것이지만 개발 구성에 대해서 간단하게 서술하였다.



사용자가 웹 브라우저를 통하여 특정 페이지에 접속하면 웹 서버(실제로는 WAS)는 해당 페이지의 컨트롤을 호출하고,

사용자가 입력하거나 처리에 필요한 정보를 구성하여 작성한 HTML을 웹 서버에 반환하게 되고

웹 서버는 해당 내용을 클라이언트(웹브라우저)에게 전송하면 사용자가 원하는 내용을 보게 된다.

다만 컨트롤이 처리할 때, 데이터 베이스 관련 작업이 필요한 경우 서비스를 호출하여 해당 데이터 처리와 관련된 실행(SQL)을 처리하여 반환하게 된다.




게시판의 리스트를 예로 들면,

사용자가 게시판 리스트(board1List)를 선택한 경우 웹 서버는 컨트롤인 board1List(Java)를 호출한다.

컨트롤인 board1List는 데이터 베이스에서 게시판 데이터를 가져오기 위해 서비스인 boardSvc를 호출하고

boardSvc는 Mybtis를 통해 데이터를 가져올 수 있는 SQL문을 board1.xml 파일에서 찾아서 실행시키게 된다. 

실행 결과로 게시판 데이터들을 집합(RecordSet)으로 받게 되고 이 데이터를 컨트롤에게 반환한다.


컨트롤은 이 데이터와 필요한 데이터를 묶어서 HTML로 구성된 board1List.jsp로 넘겨주고,

JSP 파일에서는 Taglib와 HTML로 사용자가 보는 화면을 구성하게 된다.

즉, MVC ((Model–View–Controller)로 운영되는 것이다.

데이터 베이스는 MariaDB를 대상으로 작성하였으나 MySQL에서도 사용가능하며,

Limit나 DATE_FORMAT등 함수 몇 가지를 수정하면 표준 SQL이라 다른 데이터 베이스에서도 사용 가능하다.



'Java > 게시판기본' 카테고리의 다른 글

2. 게시판의 구성  (4) 2016.04.02
3. 설치  (18) 2016.04.02
4. 게시판 구성 단계  (14) 2016.04.02

프로그래밍 언어에 관계없이 온라인 게시판은 일반적으로 다음 그림과 같이 구성된다.


  • 리스트: 게시판의 모든 내용을 웹 페이지에 출력 하는 것으로 게시판 테이블(TBL_BOARD)의 내용을 가져와서(Select) 하여 지정된 형태로 출력하게 된다.
  • 글 읽기: 리스트의 게시물 하나(한 행)를 선택하면 선택한 게시물에 대한 상세한 내용을 볼 수 있는 글 읽기 페이지로 이동한다. 게시물을 확인하고 리스트로 돌아가거나 글 수정이나 삭제를 할 수 있다.
  • 글 쓰기: 리스트 페이지에서 [글쓰기] 링크를 선택하면 나타나는 페이지로 사용자가 입력할 화면이 나오고, 입력 후 [저장] 버튼을 클릭하면 테이블에 저장(Insert) 한 후 리스트로 돌아가서 저장된 내용을 볼 수 있게 한다.
  • 글 수정: 글쓰기와 같은 화면으로 구성되고, 글 읽기에서 [글수정]을 선택하면 이동한다. 수정할 내용을 입력 후 저장] 버튼을 클릭하면 테이블에 저장(Update)한 후 리스트로 돌아가서 저장된 내용을 볼 수 있게 한다.
  • 글 삭제: 글 읽기에서 [글삭제]를 선택하면 화면 없이 삭제를 진행하고 리스트로 돌아가서 삭제된 내용을 볼 수 있게 한다.

글쓰기를 제외하고는 기본키(Primary Key, PK) 값이 있어야 해당 글을 읽거나 수정/ 삭제 할 수 있다.

게시판에서는 기본키가 글 번호가 된다.

개발하는 방식에 따라 글 수정과 삭제 링크를 글읽기가 아닌 리스트에 둘 수 있지만 본 예제에서는 위 그림처럼 진행한다.





이 그림은 게시판의 구성에 컨트롤명(웹페이지명)을 매핑한 그림이다.

사용자는 게시판 리스트 페이지에 접속하고 웹서버는 리스트 페이지를 제공하기 위해 boardList 컨트롤을 호출한다.

하나의 Java 파일(board1Ctr, board2Ctr 등)에 모아져 있으니 먼저 확인하면 좋을 것이다.

또, 이 컨트롤에서 모든 처리가 이루어지기 때문에 먼저 설명한다.


이하의 게시판 예제는 GitHub에서 다운 받을 수 있다.

'Java > 게시판기본' 카테고리의 다른 글

Spring 4 + MyBatis 3 + MariaDB (Maven) 기반 게시판 예제  (3) 2016.04.02
3. 설치  (18) 2016.04.02
4. 게시판 구성 단계  (14) 2016.04.02

여기서는 다루지 않지만 기본적으로 다음 사항은 설치가 되어 있어야 한다.

설치 되지 않았다면 참고할 사이트를 작성하였으니 읽고 설치 해야 한다.


이클립스(Eclipse)에서 가져오기(import)나 새로만들기(New)를 실행하여

다음 그림과 같이 Git(Projects from Git)을 선택한다.

다음 화면에서 Clone URI를 선택한다.

Github의 게시판 예제 사이트 (https://github.com/gujc71/board_sample)에서

본 샘플 Git URL(https://github.com/gujc71/board_sample.git)을 복사한다.

이클립스에서 URL에 붙여넣기를 한다.

가져온 샘플을 저장할 디렉토리를 지정한다.

디렉토리는 이클립스에서 지정된 workspace 하위에 있어야 한다.

샘플로 생성할 프로젝트 종류를 지정하는 화면으로

다음과 같이 "Import existing Eclipse projects"를 선택한다.

다음 화면에서 완료(finish)를 선택하면

Github에서 데이터를 가져와 컴파일하는 화면이 나타난다.

Maven을 사용했기 때문에

다음 그림과 같은 프로젝트가 생성되고,

Maven이 필요한 라이브러리(jar)를 설치해 준다.

위 트리에 빨간색 X 표시 아이콘이 나타날 경우가 있다.

해당 파일을 열어 보면 자바 기본 클래스들이 모두 오류 표시가 된 경우는 자바 버전이 맞지 않은 것이다.

제공되는 소스는 자바 1.7로 개발되었는데 설치한 사람의 PC에는 다른 버전의 자바가 설치 된 경우 이다.


위 트리의 상위(프로젝트)를 선택하고 마우스 오른 쪽을 눌러 "Properties"를 실행하고

Java Build Path > Libaraies 탭을 선택한다.

JRE System Library에 jre 버전을 확인하고 Edit 버튼으로 설치된 자바 버전으로 변경한다.

board\src\main\webapp\WEB-INF하위에 있는

applicationContext.xml파일을 열어서 MariaDB의 적절한 url와 아이디/비밀번호를 넣고

톰캣을 실행한다.

MariaDB에는 다음 테이블이 생성되어 있어야 한다.

CREATE TABLE TBL_BOARD (
  BRDNO int(11) NOT NULL AUTO_INCREMENT,
  BRDTITLE varchar(255),
  BRDWRITER varchar(20),
  BRDMEMO   varchar(4000),
  BRDDATE   datetime,
  BRDHIT INT,
  BRDDELETEFLAG CHAR(1),
  PRIMARY KEY (BRDNO)
) ;

CREATE TABLE TBL_BOARDFILE (
    FILENO INT(11)  NOT NULL AUTO_INCREMENT,
    BRDNO INT(11),
    FILENAME VARCHAR(100),
    REALNAME VARCHAR(30),
    FILESIZE INT,
    PRIMARY KEY (FILENO)
);


웹브라우저에서 http://localhost:8080/board/board1List를 입력하여

실행해 보면 다음 그림과 같이 게시판이 실행된다.


게시판 예제는 다음 그림과 같은 구조로 제작되었다.

Java > gu 폴더에 서비스, 컨트롤 등의 Java 파일이 있고

Resources > sql 폴더에 SQL 문이 Mybatis의 XML 파일로 있다.

Webapp > WEB-INF > jsp 폴더에 JSP(HTML)로 작성된 파일이 있다.

gu 폴더 하위의 board1 폴더,

sql 폴더에 있는 board1.xml, 

jsp 폴더 하위의 board1 폴더가 각 단계별 하나의 묶음으로 구성되었다.


gu 폴더 하위의 board1 폴더 하위에 있는

board1Ctr.java에 기본 게시판에 사용된 모든 컨트롤

board1Src.java에 기본 게시판에 사용된 모든 서비스가 있다.

gu 폴더 하위의 board2, 3 등의  폴더 하위에도 동일한 규칙이 적용되었다.

board1Ctr, board2Ctr등과 board1Src, board2Src 등이 아닌

boardCtr 과 boardSrc로 각 폴더별로 동일한 명칭을 사용하면 좀더 편한데

이러한 명명 규칙은 Java에서는 허용하지만 Spring에서 허용되지 않아서 앞서의 명명 규칙처럼 다른 이름을 사용하였다.





'Java > 게시판기본' 카테고리의 다른 글

Spring 4 + MyBatis 3 + MariaDB (Maven) 기반 게시판 예제  (3) 2016.04.02
2. 게시판의 구성  (4) 2016.04.02
4. 게시판 구성 단계  (14) 2016.04.02

본 샘플은 Spring 4 + MyBatis 3 + MariaDB (Maven) 기반으로 게시판을 만드는 과정을 단계별로 구현한 샘플이다.

각 내용은 다음과 같이 구성되었다.


1. board Step 1 (게시판1)
    List: 모든 게시물 출력
    Form: 사용자 입력 내용 저장
    Update: 사용자 입력 내용 수정
    Read: 사용자 입력 내용 보기
    Delete: 지정된 게시물 삭제

    URL: http://localhost:8080/board/board1List


2. board Step 2 (게시판2)

    List: 페이징, 새로운 번호 부여
    Form: 입력/수정을 하나로
    Read: 조회수
    Delete: 삭제에서 숨기기로

    URL: http://localhost:8080/board/board2List


3. board Step 3 (게시판3)

    List: 검색, 제목을 한 줄로 표시 ==> 페이징을 공통으로
    Form: 필수입력, 수정/저장 서비스 하나로
    Read: 스크립트 실행 방지

4. board Step 4 (게시판4)

    자료실

5. board Step 5 (게시판5)

    댓글

6. board Step 6 (게시판6)

    무한 댓글 (계층형)

7. board Step 7 (게시판7)

    JQuery / Ajax

8. board Step 8
(게시판8)

    멀티 게시판

9. board Step 9 - (게시판9)

    멀티 게시판 관리자


'Java > 게시판기본' 카테고리의 다른 글

Spring 4 + MyBatis 3 + MariaDB (Maven) 기반 게시판 예제  (3) 2016.04.02
2. 게시판의 구성  (4) 2016.04.02
3. 설치  (18) 2016.04.02

+ Recent posts