文章出處
文章列表
分頁實現:
實現數據的分頁顯示,需要以下幾個關鍵步驟:
①確定每頁顯示的總頁數
②計算顯示的總頁數
③編寫SQL語句
實現效果如圖所示:
當點擊下一頁時,地址欄地址為?pageIndex=2
1、創建util包,Page類,定義相關屬性并進行封裝:
package cn.news.util; import java.util.List; import cn.news.entity.NewsDetail; public class Page { //當前頁 private int pageIndex; //頁面記錄數 private int pageSize; //本業顯示真實數據 private List<NewsDetail> list; //總頁數 private int totalPages; //總記錄數 private int totalRecords; public int getPageIndex() { return pageIndex; } public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public List<NewsDetail> getList() { return list; } public void setList(List<NewsDetail> list) { this.list = list; } public int getTotalPages() { return totalPages; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } }
2、在Dao實現類NewsDetailDaoImpl定義獲取新聞當前頁的數據的方法getonePage,并植入兩個參數pageIndex, pageSize
@Override public List<NewsDetail> getonePage(int pageIndex, int pageSize) throws Exception { List<NewsDetail> list=new ArrayList<NewsDetail>(); String sql="select top "+pageSize+" * from newsDetails where newsId not in(select top "+(pageIndex-1)*pageSize+" newsId from newsDetails)"; ResultSet rs=executeQuery(sql); if(rs!=null) { while(rs.next()) { NewsDetail news=new NewsDetail(); news.setNewsId(rs.getInt("newsId")); news.setNewsTitle(rs.getString("newsTitle")); news.setNewsContent(rs.getString("newsContent")); news.setNewsCreateDate(rs.getDate("newsCreateDate")); news.setNewsAuthor(rs.getString("newsAuthor")); news.setNewsCategoryId(rs.getInt("newsCategoryId")); list.add(news); } } return list; }
3、在NewsServlet類中把數據傳遞給Jsp頁面
package cn.news.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.news.entity.NewsDetail; import cn.news.impl.NewsDetailDaoImpl; import cn.news.util.Page; public class NewsServlet extends HttpServlet { /** */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //實例化dao NewsDetailDaoImpl dao=new NewsDetailDaoImpl(); try { Page page=new Page(); //默認3條數據 int pageSize=3; page.setPageSize(pageSize); //當前頁 int myindex=1; String pageIndex=request.getParameter("pageIndex"); if(pageIndex!=null&&(!pageIndex.equals(""))) { myindex=Integer.parseInt(pageIndex); }else { myindex=1; } //當前頁賦值 page.setPageIndex(myindex); int mytotalPages=0; int totalPages=dao.getAllCount(); if(totalPages%pageSize==0) { mytotalPages=totalPages/pageSize; } else { mytotalPages=totalPages/pageSize+1; } page.setTotalPages(mytotalPages); //泛型數據 List<NewsDetail> list= dao.getonePage(page.getPageIndex(), pageSize); page.setList(list); request.setAttribute("list", page); request.getRequestDispatcher("/index.jsp").forward(request, response); //List<NewsDetail> list=dao.getAllNews(); } catch (Exception e) { e.printStackTrace(); } } }
4、在index.jsp頁面得到泛型集合,并獲取當前頁數和下一頁
<% Page page2=(Page)request.getAttribute("list"); for(NewsDetail item:page2.getList()) { %> <li><a href='newspages/news_read.jsp'><%=item.getNewsTitle() %></a><span><%=item.getNewsCreateDate() %></span></li> <% } %> <p align="right"> 當前頁數:[<%=page2.getPageIndex() %>/<%=page2.getTotalPages() %>] <a href="<%=path %>/servlet/NewsServlet?pageIndex=<%=page2.getPageIndex()+1%>">下一頁</a> <a href="#">末頁</a> </p> </ul>
文章列表
全站熱搜