게시판 작업이 거의 마무리되어 간다.
페이징이 어렵다고 생각했는데 하고보니 괜찮았던..?(머쓱)
테이블에서 총 컬럼의 수를 구해서 최대 게시물 수를 리턴해서 보내줬다.
public int maxCnt() {
conn = db.getConnection();
String sql = "select count(*)c from newboard";
int pageNum = 0;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
rs.next();
int result = rs.getInt(1);
if(result%10 > 0) {
System.out.println("0보다 크네요");
// System.out.println((double)maxCnt/10);
System.out.println("페이지번호"+Math.ceil((double)result/10));
pageNum = (int)Math.ceil((double)result/10);
}else {
pageNum = result;
}
} catch (SQLException e) {
e.printStackTrace();
}
return pageNum;
}
총 칼럼 수를 받아서 페이지 정보를 받아 보내주는 서블릿
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
BoardDAO dao = new BoardDAO();
int maxCnt = dao.maxCnt();
System.out.println("페이지수"+maxCnt);
request.getParameter("page");
System.out.println("선택한 페이지 번호" + request.getParameter("page"));
String sPage = request.getParameter("page");
if(sPage==null) {
//처음 접속했을때 정보가 없으면 1페이지로 인식한다.
ArrayList<BoradDTO> list = dao.getList(10);
request.setAttribute("list", list);
request.setAttribute("nextPage", 1);
request.setAttribute("thisPage", 1);
request.setAttribute("maxPage",maxCnt);
request.getRequestDispatcher("B_boardMain.jsp").forward(request, response);
}else {
//넘어어오는 현재 페이지 정보가 있을 경우 총 페이지 수를 계산해서 메인 페이지로 정보를 보낸다
int thisPage= Integer.parseInt(request.getParameter("page"));
int nextPage = ((thisPage-1)/5)*5+1;
int page = 10*(thisPage);
ArrayList<BoradDTO> list = dao.getList(page);
request.setAttribute("list", list);
request.setAttribute("nextPage", nextPage);
request.setAttribute("thisPage", thisPage);
request.setAttribute("maxPage",maxCnt);
request.getRequestDispatcher("B_boardMain.jsp").forward(request, response);
}
}