[Day 21 | JSP] 게시판 데이터 및 페이지 이동에 대한 설명

y♡ding·2024년 11월 11일
0

데브코스 TIL

목록 보기
138/163

1. 총 데이터 갯수 계산

게시판의 총 데이터 갯수를 확인하는 방법은 다음과 같습니다.

  1. SQL 쿼리 사용:

    SELECT COUNT(*) FROM board1;
    • 데이터베이스에서 board1 테이블의 모든 레코드 개수를 계산합니다.
    • 결과값으로 게시판에 저장된 총 데이터 갯수를 반환합니다.
  2. Java에서 ResultSet 활용:

    • getRow() 메서드를 사용하여 행 번호를 가져옵니다.
    • 데이터를 순회하며 카운트를 증가시키는 방식:
    int count = 0;
    while (resultSet.next()) {
        count++;
    }
    System.out.println("총 데이터 갯수: " + count);
  3. 날짜 차이 계산 및 필터링:

    • 게시글의 날짜와 현재 날짜의 차이를 계산하여 최신 글 여부를 판별:
    SELECT seq, DATEDIFF(NOW(), wdate) AS wgap FROM board1;
    • DATEDIFF는 두 날짜 간의 일 수 차이를 계산합니다.
      • 결과값이 0이면 오늘 작성된 글 → 최신 글
      • 결과값이 1 이상이면 오래된 글

    Java 로직 예시:

    if (wgap == 0) {
        sbHtml.append("<td class='left'><a href='board_view1.jsp?seq=" + seq + "'>" + subject + "</a>&nbsp;<img src='../../images/icon_new.gif' alt='NEW'></td>");
    } else {
        sbHtml.append("<td class='left'><a href='board_view1.jsp?seq=" + seq + "'>" + subject + "</a></td>");
    }
    • NEW 아이콘은 최신 글일 때만 표시되도록 구현됩니다.

2. 페이지 자동 이동

페이지 이동은 웹 애플리케이션에서 중요한 요소이며, 서버와 클라이언트에서 각각 다른 방식으로 처리할 수 있습니다.

  1. 서버에서 이동:

    • response.sendRedirect()를 사용하여 클라이언트에게 새로운 URL로 리다이렉션을 지시합니다.
    • 서버에서 처리되므로 사용자는 중간에 개입할 수 없습니다.
    response.sendRedirect("./mariadb/design_simple1/board_list1.jsp");
  2. 클라이언트에서 이동:

    • JavaScript의 location.href를 사용하여 클라이언트가 새로운 URL로 이동합니다.
    • 이 방법은 이동 전에 알림 메시지(alert)를 출력하는 등 추가적인 처리가 가능합니다.
    <script type="text/javascript">
        alert('확인을 클릭하면 게시판으로 이동합니다.');
        location.href = './mariadb/design_simple1/board_list1.jsp';
    </script>
    • 차이점:
      • 서버 리다이렉트(response.sendRedirect)는 서버에서 처리되므로 보안성이 높습니다.
      • 클라이언트 이동(JavaScript)은 클라이언트 측에서만 작동하며, 사용자가 브라우저를 조작할 수 있습니다.

3. 게시판 구현 방식

.jsp 파일만 사용하는 웹 애플리케이션은 하드코딩(hard coding)이 많아 유지보수가 어렵습니다. 이를 개선하기 위해 개발자들은 MVC 패턴과 같은 디자인 패턴을 도입합니다.

  • 하드코딩의 문제점:

    • 로직과 UI가 한 파일에 섞여 있어 코드 가독성이 낮습니다.
    • 동일한 기능이 반복되기 쉽습니다.
  • 클래스 + JSP 활용:

    • 로직은 Java 클래스에서 처리하고, JSP는 UI 출력에만 집중합니다.
    • 예를 들어, 게시판 데이터 로딩은 서블릿이나 DAO(Data Access Object)에서 처리하고, JSP는 이를 출력합니다.

4. 응용 예제

게시판에서의 흐름과 구현:

  1. 게시판 메인 페이지 (board_list1.jsp)

    • 전체 게시글 목록을 표시합니다.
    • 게시글 제목 클릭 시 상세 페이지(board_view1.jsp)로 이동합니다.
  2. 글쓰기 페이지 (board_write1.jsp)

    • 사용자가 작성한 글을 board_write1_ok.jsp로 전송하여 데이터베이스에 저장합니다.
    • 저장 성공 후, 자동으로 메인 페이지(board_list1.jsp)로 이동합니다.
  3. 글 수정 페이지 (board_modify1.jsp)

    • 기존 데이터를 수정합니다.
    • 수정 후 저장 시 다시 상세 페이지로 돌아갑니다.
  4. 글 삭제 페이지 (board_delete1.jsp)

    • 게시글을 삭제한 후 메인 페이지로 이동합니다.

5. 하드코딩과 패턴화 비교

구분하드코딩(.jsp만 사용)패턴화(클래스 + JSP)
구조로직과 UI가 한 파일에 섞임로직은 Java 클래스, UI는 JSP로 분리
유지보수성코드 수정 시 많은 부분 재작성 필요수정이 용이, 재사용성이 높음
확장성새로운 기능 추가 시 비효율적확장 및 모듈화에 용이
보안성낮음상대적으로 높음

위 구조를 개선한 설계 방식으로 MVC(Model-View-Controller)나 DAO(Data Access Object) 패턴을 활용하면 효율적입니다.

0개의 댓글

관련 채용 정보