JSP와 Servlet을 이용한 게시판 프로젝트의 전체적인 흐름을 정리해보았습니다.
학원 게시판 작업 공부를 진행하면서 서버와 클라이언트의 역할, 데이터 흐름을 이해했습니다.
1. 프로젝트 흐름
1️⃣ index.jsp에서 menubar.jsp를 include 한다.
- 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 ?;
- startRow와 endRow 값을 설정하여 해당 범위의 게시글만 조회합니다.
- 예를 들어, 한 페이지에 10개씩 보여주면:
- currentPage = 1 → 1~10번 게시글 조회
- currentPage = 2 → 11~20번 게시글 조회
'Server' 카테고리의 다른 글
[JSTL] JSTL 라이브러리 설치파일 및 적용방법 (0) | 2025.02.24 |
---|---|
[EL] EL이 무엇일까? (0) | 2025.02.24 |
[SERVER] GET 방식과 POST 방식이란? (0) | 2025.02.21 |
[JSP] JSP는 무엇일까? (1) | 2025.02.21 |
[Server] Java에서 웹 서버를 사용하는 방법에 대해 알아보자! (0) | 2025.02.20 |