1 분 소요

게시글 페이징 번호

  • stackoverflow의 페이징 스타일을 참고하였다.
  • 현재 페이지에 5개의 게시글을 보여준다.
  • 나중에 사용자가 한 페이지에 볼 수 있는 게시글 수를 정할수 있게 할 것이다.
  • 완성된 페이징 페이지.
    Pasted image 20230515223925

JSP

  • 게시글의 베이스가 되는 jsp 파일을 수정하였다.

notice_board.jsp

  • servlet 으로 부터 현재 페이지와 마지막 페이지 정보를 받아온다.
  • 페이징 번호 리스트 정보를 받아온다.


  • 페이징 번호 리스트 정보를 이용하여 페이징 부분을 그려준다.
  • 리스트에 들어있는 0은 생략을 의미한다.


  • 총 게시글 수 보여주기.
  • servlet 으로 부터 받은 총 게시글 수를 보여준다.


  • 페이징 번호 스타일.


  • 참고
  • form 에서 input이 여러개면 엔터를 눌러도 submit 이 안된다.
  • 이럴 때는 type이 submit 인 input을 만들어 줘야한다.


Servlet

MainPage.java

  • uriSearch 함수의 게시판 부분이다.


  • 현재 페이지 정보를 get의 파라미터로 받아온다.
  • url?page=2&q=검색 형태이다.
  • 페이지 정보를 못 받아오거나 음수면 페이지를 1로 초기화를 진행한다.


  • 검색 결과에 해당하는 총 게시글의 수 구하기.


  • 한 페이지 보여줄 게시글의 수를 정한다.
  • 마지막 페이지를 구해준다.
  • 사용자로 부터 받은 페이지 수가 마지막 페이지 보다 크다면 마지막 페이지로 리다이렉트 한다.
  • sql문으로 검색을 하기위해서 실제 데이터의 시작 위치를 계산하여 준다.


  • 검색 데이터 가져오기.
  • 여기서는 5개의 게시글을 가져온다.


  • 페이징 번호를 저장하기 위한 리스트를 만들어준다.
  • 한번에 몇개의 페이징번호를 보여줄지 정해준다.
  • 해당 리스트에 0은 생략을 의미한다.
  • 예를들어 현재 페이지가 6이고 마지막 페이지가 10 이면 페이징 형태가 다음과 같다.
    1 ... 4 5 6 7 8 ... 10


  • 페이지를 그리기위하여 mainpage jsp로 지금까지 만들었던 정보를 넘겨준다.


NoticeBoardDAO.java

  • 검색목록을 가져오는 getNoticeList 함수를 수정하였다.
  • 모든 목록을 가져오는 것이아닌 정해준 갯수의 게시물 목록만 가지고 온다.
  • 게시글의 시작위치와 가져올 갯수를 함수의 인자로 준다.


  • sql 쿼리문에 특정 갯수만 출력을 하기위한 구문을 추가한다.
  • prepared statment를 이용하였다.


  • 검색된 게시판 목록 총 개수 구하기.

전체코드

MainPage.java

NoticeBoardDAO.java

notice_board.jsp

웹 프로젝트

댓글남기기