자바(JAVA)/JSP 웹 프로그래밍 공부 (성낙현의 JSP 자바 웹 프로그래밍 참고)

JAVA/JSP 22. 모델1 방식의 회원제 게시판 만들기 - 프로젝트 구상, 모델1 구조와 모델2 구조(MVC 패턴)

개발학생 2023. 12. 27. 20:02
반응형

프로젝트 구상

1. 회원제 게시판 구조

  • 비회원(로그아웃) 상태: 목록 보기, 상세 보기
  • 회원(로그인) 상태: 글쓰기, 수정하기, 삭제하기
    • 글쓰기 후: 목록으로 이동
    • 수정 후: 상세 보기로 이동
    • 삭제 후: 목록으로 이동

 

2. 테이블 및 시퀀스 생성

  • 작성한 게시물을 DB에 저장한 후 관리해야 하므로, JDBC 프로그래밍 필수
    • DB에는 회원정보를 저장할 테이블 & 게시물을 저장할 테이블 생성

1) 회원관리: member 테이블 정의

  • 회원정보를 저장할 테이블: 게시판에 글을 쓰거나 수정, 삭제를 하기 전 회원인증을 하기 위해 사용
    → 회원가입은 게시판의 글쓰기와 기능적으로 동일하므로, 앞서 삽입했던 더미 데이터 사용
컬럼명 데이터 타입 null 허용 기본값 설명
id varchar2(10) N 기본키   아이디
pass varchar2(10) N     패스워드
name varchar2(30) N     이름
regidate date N   sysdate 가입날짜

 

2) 게시물 관리: board 테이블 정의

  • 사용자가 입력한 게시물을 저장하는 테이블
    • 기본키로 사용되는 일련번호 컬럼: 시퀀스(순차적으로 증가하는 순번을 생성해, 중복되지 않는 정숫값을 반환하는 DB 객체, 만들었던 것 재활용)가 부여하는 순번 입력
  • member 테이블에 없는 아이디로 게시물을 작성하려 하면, 제약조건 위배로 에러 발생
    • 회원으로 가입된 사람만 글을 쓸 수 있음
컬럼명 데이터 타입  null 허용  키  기본값  설명
num number N 기본키   일련번호, 기본키
title varchar2(200) N     게시물의 제목
content varchar2(2000) N     내용
id varchar2(10) N 외래키    
(member 테이블의 id를 참조)   작성자의 아이디      
postdate date N   sysdate 작성일
visitcount number(6)       조회수

 

 


 

모델1 구조와 모델2 구조(MVC 패턴)

1. MVC 패턴

1) MVC 패턴의 절차

  • 모델(Model), 뷰(View), 컨트롤러(Controller)의 약자로, 소프트웨어를 개발하는 방법론의 일종
    • 모델, 뷰, 컨트롤러가 역할을 분담하여 사용자의 요청을 처리한 후 결과를 웹 브라우저에 출력하며 응답함 (웹 애플리케이션: 사용자의 요청을 받아 처리한 후 응답하는 구조)

 

 

(1) 모델

  • 업무 처리 로직(비즈니스 로직) 혹은 데이터베이스와 관련된 작업 담당

(2) 뷰

  • JSP 페이지와 같이 사용자에게 보여지는 부분 담당

(3) 컨트롤러

  • 모델과 뷰를 제어함
  • 사용자의 요청을 받아서 분석하고, 필요한 업무 처리 로직(모델)을 호출함
    • 모델이 결괏값을 반환하면 출력할 뷰(JSP 페이지) 선택 후 전달

 

2) 모델1 구조와 모델2 구조

(1) 모델1의 구조

  • 사용자의 요청을 JSP가 받아 모델을 호출: 모델이 요청을 처리한 후 결과를 반환하면 JSP를 통해 응답하게 됨
    → JSP에 뷰와 컨트롤러가 혼재되어 있음
  • 구조상, 개발 속도가 빠르고 배우기 쉬움
  • 뷰와 컨트롤러 기능 모두 JSP에서 구현해야 하므로, 코드가 복잡해지고 유지보수가 어려움

 

(2) 모델2의 구조

  • MVC 패턴 그대로 사용: JSP와 서블릿의 장점을 모두 취합하여, JSP는 뷰로 사용하고 서블릿은 컨트롤러로 사용
  • 사용자의 요청을 컨트롤러인 서블릿이 받음: 서블릿은 사용자의 요청을 분석한 후 모델을 호출
    → 모델로부터 데이터를 받아 뷰로 전달하면, 사용자는 요청에 대한 응답을 받을 수 있음
  • 모델/뷰/컨트롤러가 각자의 역할을 수행하므로, 명확한 업무 분담 & 간결한 코드 & 쉬운 유지보수
  • 구조가 복잡하여, 익숙하지 않다면 개발 기간이 길어질 수 있음
    → 규모가 작은 프로젝트에서는 적합하지 않을 수 있음

 

 

 

 

 

 

반응형