首页 > 代码库 > Java实现分页功能 代码很粗糙,都是根据自己所需去定义逻辑功能的。

Java实现分页功能 代码很粗糙,都是根据自己所需去定义逻辑功能的。

1.首先定义了一个PageUtil的类,看了网上的很多教程,貌似都有一个这样的类,自己也定义了一个。在代码编写过程中发现这个类其实也没有那么大的作用,但是不去定义这个类,感觉好像缺少什么似得。(请高手解释下这个类的存在的意义。)

 1 package com.util; 2  3 public class PageUtil { 4     private int totalRows;  //总的记录数 5     private int curPage;    //当前页码 6     private int pageSize;   //每页记录数 7     private int totalPages; 8     public PageUtil(int totalRows, int curPage, int pageSize) { 9         super();10         this.totalRows = totalRows;11         this.curPage = curPage;12         this.pageSize = pageSize;13     }14     public PageUtil(int totalRows, int pageSize) {15         this.totalRows=totalRows;16         this.pageSize=pageSize;17     }18     19     //总页数20     public int getTotalPages() {21         return totalRows%pageSize==0?totalRows/pageSize:totalRows/pageSize+1;22     }23     public int getTotalRows() {24         return totalRows;25     }26     public void setTotalRows(int totalRows) {27         this.totalRows = totalRows;28     }29     public int getCurPage() {30         return curPage;31     }32     public void setCurPage(int curPage) {33         this.curPage = curPage;34     }35     public int getPageSize() {36         return pageSize;37     }38     public void setPageSize(int pageSize) {39         this.pageSize = pageSize;40     }41     public void setTotalPages(int totalPages) {42         this.totalPages = totalPages;43     }44     45 }

2. 自己根据所需的功能提供了一个QueryList的action类。

1 package com.action; 2  3 import java.util.List; 4  5 import javax.servlet.http.HttpSession; 6  7 import org.apache.struts2.ServletActionContext; 8  9 import com.bean.Student;10 import com.daoImpl.DaoImpl;11 import com.opensymphony.xwork2.ActionSupport;12 import com.util.PageUtil;13 14 public class QueryAll extends ActionSupport {15     private final static int pageSize=8;16     private DaoImpl daoImpl=new DaoImpl();17     private PageUtil pageUtil;18     private int rows;19     20     private int curPage;21     public void setCurPage(int curPage) {22         this.curPage = curPage;23     }24     25     public String execute() throws Exception {26         rows=daoImpl.getTotalRows();27         pageUtil=new PageUtil(rows, pageSize);28         if(curPage>pageUtil.getTotalPages()){29             pageUtil.setCurPage(pageUtil.getTotalPages());30         }31         else if(curPage>0) {32             pageUtil.setCurPage(curPage);33         }else {34             pageUtil.setCurPage(1);35         }36         37         //test38         List<Student> studetnsInfo=daoImpl.queryList(pageUtil.getPageSize(), pageUtil.getCurPage());39         System.out.println(studetnsInfo.size());40 41         HttpSession session=ServletActionContext.getRequest().getSession();42         43         session.setAttribute("list", studetnsInfo);44         session.setAttribute("curPage", pageUtil.getCurPage());45         46         return SUCCESS;47     }48  50 }

 

这里把前台所需的信息放在session里面,提供给前台使用。控制逻辑上当访问首页之前和尾页之后的页面的时候,自动定位到首页和尾页。

附上queryList()方法的代码。

 1     public List<Student> queryList(int pageSize, int curPage) { 2         List<Student> list=new ArrayList<>(); 3         Student stu; 4         String sql="select * from classa limit "+pageSize*(curPage-1)+", "+pageSize; 5         try { 6             con=JDBC_Connection.getConnection(); 7             statement=con.createStatement(); 8              9             res=statement.executeQuery(sql);10             while(res.next()){11                 stu=new Student(res.getString(1), res.getString(2), res.getString(3), res.getDouble(4), res.getDouble(5));12                 list.add(stu);13             }14         } catch (SQLException e) {15             e.printStackTrace();16         }17         try {18             destory();19         } catch (Exception e) {20             e.printStackTrace();21         }22         return list;23     }

3.前端页面自己不是太懂,随便写了展示jsp页面。

 1 <body> 2     <%  3         int curPage=0; 4          5         if(session.getAttribute("curPage")!=null) 6         curPage=(int)session.getAttribute("curPage"); 7     %> 8     <form action="queryAll" method="post"> 9         <table width="98%" align="center" cellpadding="1" cellspacing="1" border="1">10             <tr align="center">11                 <td width="5%">学号</td>12                 <td width="5%">姓名</td>13                 <td>学术贡献</td>14                 <td width="5%">scoreA</td>15                 <td width="5%">socreB</td>16             </tr>17             <s:iterator var="stu" value="http://www.mamicode.com/#session.list" >18             <tr>19                 <td>${stu.stuNo}</td>20                 <td>${stu.name}</td>21                 <td>${stu.detialInfo}</td>22                 <td>${stu.scoreA}</td>23                 <td>${stu.socreB}</td>24             </tr>25             </s:iterator>26             27         </table>28         29         <div align="right" style="color: red;">30             <a href="http://www.mamicode.com/queryAll?curPage=">上一页</a>/31             <a href="http://www.mamicode.com/queryAll?curPage=">下一页</a>32         </div>33         34         35     </form>36     37 </body>

 

Java实现分页功能 代码很粗糙,都是根据自己所需去定义逻辑功能的。