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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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         //test
38         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="#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="queryAll?curPage=<%=curPage-1%>">上一页</a>/
31             <a href="queryAll?curPage=<%=curPage+1%>">下一页</a>
32         </div>
33         
34         
35     </form>
36     
37 </body>

 

以上是关于Java实现分页功能 代码很粗糙,都是根据自己所需去定义逻辑功能的。的主要内容,如果未能解决你的问题,请参考以下文章

网站中如何实现分页

Java中如何实现分页功能

已经查询出来的数据如何在java页面实现分页?

JavaWeb分页了解一下

AxureRP分页签 / Tab选项卡切换功能~

java&sql的分页怎么做?