감 잃지말고 개발하기

[JSP] [MVC] [게시판] MVC 패턴으로 게시판 구현하기 01. 기본 설정 및 프로젝트 패키지 구조 본문

JSP/MVC

[JSP] [MVC] [게시판] MVC 패턴으로 게시판 구현하기 01. 기본 설정 및 프로젝트 패키지 구조

persii 2023. 3. 23. 13:11

목표

♠ Eclipse Dynamic Web Project에서 MVC 패턴으로 게시판을 구현할 수 있다.

 

개발 환경

Eclipse-jee-2022-03
Apache Tomcat 9.0.58
MySQL8.0

 

프로젝트 패키지 구조

프로젝트명 : MVCboard

프로젝트 구조
필요한 자바 클래스

1. src 폴더 하단

패키지 명 설명
controller 웹 브라우저의 모든 요청 URL을 받아들이고 이와 함께 전달되는 요청 파라미터를 받아 제어하는 서블릿들이 정의되어 있는 패키지.
게시판 프로젝트의 모든 웹 요청은 Servlet 역할을 수행하는 BoardFrontController 클래스로 요청하게 하여 전체 요청이 이 클래스 내에서 제어되도록 한다.
action 컨트롤러에서 전송된 각 웹 브라우저의 요청을 파악해 처리하는 클래스가 정의되어 있는 패키지.
컨트롤러 클래스에서 전송된 각 요청에 필요한 기능(로직)을 수행하는 Action 클래스 객체의 execute() 메서드가 호출된다.
각 요청을 처리하는 Action 클래스들을 다형성을 이용해 동일한 타입으로 참조하기 위해 각 Action 클래스들이 구현할 Action 인터페이스를 설계한다. 
svc 각 웹 브라우저의 요청을 처리하는 비즈니스 로직이 구현된 클래스가 정의되어 있는 패키지.
이 Service 클래스를 거쳐 DB작업이 이루어지도록 한다.
dao MySQL DB에 존재하는 데이터들을 SQL 구문을 이용해 다루는 클래스,
즉 DAO(Data Access Object)가 존재하는 패키지
.
db DB 관련해서 공통적으로 수행해야 하는 기능들을 정의한 패키지.
  # JdbcUtil.java : DB에 연결을 담당하는 메서드, DB 작업을 처리한 후 사용한 자원을 해제시켜 주는 메서드 등 DB 작업을 할 때 공통적으로 필요한 기능들을 정의한다. 
vo Value Object.
애플리케이션에서 하나의 데이터(하나의 객체)로 다루어져야 할 정보들을 저장하는 클래스들이 존재하는 패키지.
  
# BoardBean.java :  게시판글 정보 하나를 저장하는 클래스이다.
  # PageInfo.java : 페이징 처리 관련 정보를 저장하는 클래스로, 게시판 목록 페이지에서 페이지 처리를 위해 사용한다.
  # ActionForward.java : 포워딩 정보를 저장하는 클래스이다. 컨트롤러 역할을 하는 서블릿에서 웹 브라우저의 각 요청을 받아서 처리한 후 최종적으로 뷰 페이지로 포워딩 처리할 때 이동할 뷰 페이지의 URL과 포워딩 방식(디스패치나 리다이렉트)이 필요한데, 이 두 정보를 편리하게 다루기 위한 클래스이다. 

 

2. WebContent 폴더 하단

파일 명 설명
qna_board_write.jsp 게시판 글을 작성하는 페이지로 파일을 등록할 수 있다.
qna_board_list.jsp 게시판 전체 목록을 보여주는 페이지이며 게시글 작성하는 링크가 들어있다. 게시글 제목을 누르면 상세 페이지로 이동한다.
qna_board_view.jsp 게시글 상세 페이지로, 게시글 삭제 및 수정, 댓글을 달 수 있는 링크가 걸려있다. 
qna_board_modify.jsp 게시글을 수정하는 페이지이다.
qna_board_delete.jsp 게시글을 삭제하는 페이지로, 비밀번호를 입력하면 삭제처리된다.
qna_board_reply.jsp 댓글을 다는 페이지이다.

 

URL 설정

아래 이미지처럼 URL은 http://localhost:포트번호/board/boardList.do 형식으로 만들 것이다.

게시판 최종 모습

이를 위해 톰캣 서버 파일인 server.xml에서 <Context> path 속성값을 '/'로 수정한다.

참고로 이 path의 값은 Request.getContextPath()의 값과 동일하다. 

Context path 설정

※ Context path 설정 참고
https://persimmon-ary-stepbystep.tistory.com/27

 

끝.