文章出處

分頁實現:

實現數據的分頁顯示,需要以下幾個關鍵步驟:

①確定每頁顯示的總頁數

②計算顯示的總頁數

③編寫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() %>]&nbsp; <a href="<%=path %>/servlet/NewsServlet?pageIndex=<%=page2.getPageIndex()+1%>">下一頁</a> <a href="#">末頁</a> </p>
      </ul>

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()