Server

[SERVER]JSP 게시판 프로젝트 흐름 정리

동준1234 2025. 2. 27. 17:00

JSP와 Servlet을 이용한 게시판 프로젝트의 전체적인 흐름을 정리해보았습니다.

학원 게시판 작업 공부를 진행하면서 서버와 클라이언트의 역할, 데이터 흐름을 이해했습니다.

1. 프로젝트 흐름

1️⃣ index.jsp에서 menubar.jspinclude 한다.

  • index.jsp는 웹 애플리케이션의 메인 페이지 역할을 합니다.
  • <jsp:include page="menubar.jsp"/>를 사용하여 menubar.jsp를 포함시켜 네비게이션 메뉴를 구성합니다.

2️⃣ menubar.jsp에서 서블릿(Controller)로 요청한다.

  • menubar.jsp에서 게시판 목록을 보려면 <a href="list.bo">게시판</a> 같은 링크를 클릭하여 서블릿으로 요청합니다.
  • form 태그를 사용하여 로그인, 글쓰기 등의 요청을 보낼 수도 있습니다.

3️⃣ 서블릿(Controller)에서 Service를 호출하여 데이터 처리

  • 서블릿(Controller) 은 클라이언트의 요청을 받아 적절한 서비스(Service) 를 호출합니다.
  • Service에서는 비즈니스 로직을 처리하며, DAO를 호출하여 DB 작업을 수행합니다.

4️⃣ Service에서 DAO를 호출하여 SQL 실행

  • Service는 DAO를 호출하여 SQL을 실행하고, 데이터베이스에서 필요한 데이터를 가져옵니다.
  • JDBC를 이용해 DB 연결(Connection)을 생성한 후, SQL을 실행하고 결과를 반환합니다.

5️⃣ DAO에서 SQL을 실행하여 데이터를 가져오거나 수정한다.

  • SQL을 실행하는 곳은 DAO (Data Access Object) 입니다.
  • SELECT, INSERT, UPDATE, DELETE 등의 SQL을 실행하여 데이터를 조회하거나 수정합니다.

6️⃣ Service가 DAO의 결과를 받아 서블릿으로 전달

  • DAO에서 가져온 데이터를 Service가 받아 서블릿(Controller)으로 전달합니다.
  • 서비스는 필요한 경우, 데이터 가공 등의 작업을 수행할 수도 있습니다.

7️⃣ 서블릿이 데이터를 JSP로 forward하여 화면에 출력

  • 데이터를 조회하는 경우, JSP 페이지로 RequestDispatcher.forward()를 사용하여 포워딩합니다.
  • request 객체를 이용해 데이터를 JSP로 넘깁니다.

8️⃣ 데이터가 변경되는 경우, sendRedirect()를 사용하여 메인 페이지로 이동

  • 로그인, 글쓰기, 삭제 등의 작업이 완료된 후에는 sendRedirect()를 사용하여 새로운 요청을 보냅니다.
  • forward()와 달리, request 객체가 유지되지 않습니다.

2. 주요 개념 정리

✅ 페이징 처리

SELECT * FROM (
    SELECT ROWNUM AS RNUM, A.*
    FROM (
        SELECT * FROM BOARD WHERE STATUS='Y' ORDER BY BOARD_NO DESC
    ) A
) WHERE RNUM BETWEEN ? AND ?;

  • startRowendRow 값을 설정하여 해당 범위의 게시글만 조회합니다.
  • 예를 들어, 한 페이지에 10개씩 보여주면:
    • currentPage = 11~10번 게시글 조회
    • currentPage = 211~20번 게시글 조회