JSP分页导航简单封装
来源:互联网 发布:反清复明 知乎 编辑:程序博客网 时间:2024/05/22 01:37
数据量大了就需要进行分页,分页主要使用四个参数
RecordCount 总记录条数 这个基本上是固定的(条件确定后)
PageSize 页大小 这个可以根据自己的需要进行调
PageCount 总页数 上面两个确定这个基本确定
PageIndex 当前页码 这个是可以进行变化的,取值范围0到PageCount-1之间
这是分页的基本思想,在JSP中使用我们可以通过一个PageVo类对分页的导航进行简化处理,
我设计了这样一个分页辅助类:
PageVo.java
public class PageVo {private int recordCount;private int pageSize;private int pageCount;private int pageIndex;public int getRecordCount() {return recordCount;}public void setRecordCount(int recordCount) {this.recordCount = recordCount;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getPageCount() {return pageCount;}public void setPageCount(int pageCount) {this.pageCount = pageCount;}public int getPageIndex() {return pageIndex;}public void setPageIndex(int pageIndex) {this.pageIndex = pageIndex;}public PageVo(int recordCount, int pageSize, int pageCount, int pageIndex) {super();this.recordCount = recordCount;this.pageSize = pageSize;this.pageCount = pageCount;this.pageIndex = pageIndex;}}
封装了上面四个变量,写了一个构造函数
数据访问层类使用这个辅助类
NewsDaoImpl.java
public class NewsDaoImpl extends DBM<NewsVo> implements NewsDao {public List<NewsVo> findAllByPage(PageVo p) {int recordCount=Integer.parseInt(queryScalar("select count(*) from News").toString());p.setRecordCount(recordCount);int pageSize=p.getPageSize();int pageCount=recordCount/pageSize;if(recordCount%pageSize>0) pageCount++;p.setPageCount(pageCount);int pageIndex=p.getPageIndex();if(pageIndex<0) pageIndex=0;if(pageIndex>pageCount-1) pageIndex=pageCount-1;p.setPageIndex(pageIndex);return query("select top "+pageSize+" * from news where nid not in (select top "+pageIndex*pageSize+" nid from news order by nid) order by nid");}}
使用前面写的dbuitls+反射!
JSP页面使用:
newsList.jsp
<table border="1"> <tr> <td>id</td> <td>title</td> <td>author</td> <td>createDate</td> </tr> <% int index=0; if(request.getParameter("p")!=null){ index=Integer.parseInt(request.getParameter("p")); } PageVo p=new PageVo(0,10,0,index); for(NewsVo n:new NewsBizImpl().findAllByPag(p)){ %> <tr> <td><%=n.getNid()%></td> <td><%=n.getNtitle() %></td> <td><%=n.getNauthor() %></td> <td><%=n.getNcreateDate()%></td> </tr> <% } %> </table>
这最后少一行导航功能,我们可能需要这样一个导航功能:
下面的导航基本上是一样的,因此我们可以扩充PageVo.java在其中写一个方法生成导航,jsp页面变为:
<table border="1"> <tr> <td>id</td> <td>title</td> <td>author</td> <td>createDate</td> </tr> <% int index=0; if(request.getParameter("p")!=null){ index=Integer.parseInt(request.getParameter("p")); } PageVo p=new PageVo(0,10,0,index); for(NewsVo n:new NewsBizImpl().findAllByPag(p)){ %> <tr> <td><%=n.getNid()%></td> <td><%=n.getNtitle() %></td> <td><%=n.getNauthor() %></td> <td><%=n.getNcreateDate()%></td> </tr> <% } %> <tr> </tr> </table>
我给PageVo增加了一个toNav的方法,用于生成导航功能:
对于导航我设计了两部分:
左边是一个<span class=info>共42页每页10条 共5页第1页</span> 右边是一个<span class=nav>首页 上一页 下一页 末页</span>
这样方便将来使用样式表进行扩充
最终的PageVo.java代码如下:
public class PageVo {private int recordCount;private int pageSize;private int pageCount;private int pageIndex;public int getRecordCount() {return recordCount;}public void setRecordCount(int recordCount) {this.recordCount = recordCount;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getPageCount() {return pageCount;}public void setPageCount(int pageCount) {this.pageCount = pageCount;}public int getPageIndex() {return pageIndex;}public void setPageIndex(int pageIndex) {this.pageIndex = pageIndex;}public PageVo(int recordCount, int pageSize, int pageCount, int pageIndex) {super();this.recordCount = recordCount;this.pageSize = pageSize;this.pageCount = pageCount;this.pageIndex = pageIndex;}public String toNav(String jsp){StringBuilder sb=new StringBuilder();sb.append("<span class='info'>共"+recordCount+"页每页"+pageSize+"条 共"+pageCount+"页第"+(pageIndex+1)+"页</span>");sb.append("<span class='nav'>");if(pageIndex==0){sb.append("<span class='a'>首页</span> ");sb.append("<span class='a'>上一页</span> ");}else{sb.append("<a href='"+jsp+"?p=0'>首页</a> ");sb.append("<a href='"+jsp+"?p="+(pageIndex-1)+"'>上一页</a> ");}if(pageIndex>=pageCount-1){sb.append("<span class='a'>下一页</span> ");sb.append("<span class='a'>末页</span>");}else{sb.append("<a href='"+jsp+"?p="+(pageIndex+1)+"'>下一页</a> ");sb.append("<a href='"+jsp+"?p="+(pageCount-1)+"'>末页</a> ");}sb.append("</span>");return sb.toString();}}
这里可以根据需要进行扩充和重载。
- JSP分页导航简单封装
- jsp分页-封装
- jsp 分页封装
- 简单导航item自定义封装
- PHP封装的分页导航处理类
- 简单的导航分页效果
- JSP+mysql简单分页
- 简单的jsp分页
- Jsp分页简单例子
- jsp简单分页实现
- 超简单的自定义标签封装实现的JSP分页显示功能
- 简单的分页封装(一)
- 简单的分页封装(二)
- Jsp+Jdbc+mysql封装分页功能
- 简单的JSP分页代码
- Jsp页面简单分页处理
- 简单的JSP分页显示
- jsp实现简单分页功能
- 获取鼠标位置
- LINQ TO XML
- 暗流涌动的话----“用户体验”
- 事件驱动机制和消息循环
- Android高手的六大境界
- JSP分页导航简单封装
- 适配器模式和外观模式
- 点读笔原理
- 贷款利息计算
- GTK+学习手记——1
- EXT.NET(四) SpinnerField
- Iocp Tcp Server——G-Socket1.1 Demo源码(VC & Delphi)
- FillChar的使用方法
- EXT.NET(五)Spinner Plugin