说在前头(本人用的是bootstrap +jQuery 和 struts2 +  MVC)不影响分页功能

制作一个分页功能:

效果如下:

由上图可知,此功能只适合页数不是特别多的情况下,页数多的时候,每次都要求得总记录数,太慢了。

【一】:1、总记录数,2、总页数,3、每页记录数,4、当前页

【二】:首页,上一页,下一页,尾页

【三】:直接跳转

一、java后台分页model

省略了get,set函数,和构造函数

public class PageModel<T> {private int pageSize;   //分页每一页的记录数private int pageNum=1;  //当前页号private int totalCount; //总记录数private List<T> result; //整个记录//totalpage        总页数,通过计算 直接get得到/*。。。。。。。*/public int getTotalPage(){return (totalCount - 1) / pageSize + 1;}/*。。。。。*/
}

二、DAO层

这层就不写了,主要就是获取列表

sql 语句我用的是 StringBuilder ,动态添加需要的参数

int totalCount = queryForInt(countSql.toString(), params.toArray());
List<ProductBean> result = query(ProductBean.class,sql.toString(), params.toArray());PageModel<ProductBean> pageModel = new PageModel<ProductBean>(pageSize,pageNum,totalCount,result);

三、Action层

private PageModel<ProductBean> pageModel ;
private List<KindBean> upList ;
private List<KindBean> dols;
private int pagesize=2;//初始化,为了第一次进来能有个值
private int pagenum = 1;//同上

参数:省略get,set

public int getPagebegin(){return (pagenum-1)*pagesize;
}
public int getPageend(){int a=pagenum*pagesize-1 , b=pageModel.getResult().size()-1;//注意这个,两个都要-1if(a < b) return a;else return b;
}

在以上get,set以外,再加两个

System.out.println("page:" +pagesize + " " + pagenum );
pageModel = dao.searchForPage(pagesize, pagenum);
if(pageModel.getResult().size() == 0 ){return "error";
}

获得到pagesize 和pagenum,再将要用的值传到DAO层,去数据库里找值,

【注意】当size为0时要返回错误,跳向没有数据的查询失败页面

四、JSP层

<s:iterator value="pageModel.result " var="pro" begin="pagebegin " end="pageend "><div></div>
</s:iterator>

中间加上循环的部分,pagebegin 直接会调用 后面的getPagebegin函数,pageend同理。

<div class="row" style="text-align:center"><div class="col-md-6"><span>共有</span><span class="text-primary"> ${pageModel.totalCount } </span><span>条记录  共</span>  <span class="text-primary"> ${pageModel.totalPage } </span><span>页  每页</span><span class="text-primary"> ${pageModel.pageSize } </span><span>条记录 当前</span><span class="text-primary"> ${pageModel.pageNum } / ${pageModel.totalPage } </span><span>页</span></div><div class="col-md-6"><span><a href="productAction?pagenum=1 " >首页</a> <s:if test="pageModel.pageNum == 1"><a href="productAction?pagenum=1" >上一页</a> </s:if><s:else><a href="productAction?pagenum=${pageModel.pageNum-1 } >上一页</a> </s:else><s:if test="pageModel.pageNum == pageModel.totalPage"><a href="productAction?pagenum=${pageModel.totalPage } >下一页</a> </s:if><s:else><a href="productAction?pagenum=${pageModel.pageNum+1 } >下一页</a> </s:else><a href="productAction?pagenum=${pageModel.totalPage } >尾页</a> </span><span>转到</span><select class="control" id="pagenum" name="pageModel.pageNum" οnchange="turnPage()" style="width:40px" ><s:iterator var="num" begin="1" end="pageModel.totalPage"><option value="${num }" >${num }</option></s:iterator></select><span>页</span></div>
</div>

【一】:应该没什么号说明的,直接取出值来
【二】:分页的时候,首页和尾页直接就是固定值。上一页和下一页要判断一下。

【三】:重点一、在于下拉框里的值从1到总页数,重点二、onchange函数,

jquery:

// 选框跳转页面
function turnPage(){var num = $("#pagenum").val();//alert(num );window.location.href="productAction?pagenum="+num;
}

这个时候看似完美了,你会发现还缺少一点,因为跳转完后,下拉框的值还是原来的1,所以这个也要进行改变。

jsp:

<!-- 用来将当前页面的值设置到 页面跳转框里  -->
<input type="hidden" id="pageNum" name="pageNum" value="${pageModel.pageNum }" >

jquery:

$(function(){//设置跳转页面框里的值$("#pagenum").val( $("#pageNum").val());
});

可以再优化的部分:

【一】可以用ajax分页,这样不刷新网页,更好

(首页上一页下一页尾页 + 下拉框跳转)分页功能相关推荐

  1. html 下拉框a标签跳转,html下拉框跳转问题

    满意答案 woaidaowai 2016.07.16 采纳率:49%    等级:11 已帮助:3910人 两个下拉框,第一个里面有A,B两个选项,第二个里面有X,Y两个选项.后面有一个按钮.怎么做到 ...

  2. html下拉列表框跳转,html下拉框跳转问题怎么弄?

    满意答案 dsfjd66fc 2016.07.01 采纳率:44%    等级:5 已帮助:56人 两个下拉框,第一个里面有A,B两个选项,第二个里面有X,Y两个选项.后面有一个按钮.怎么做到选A和X ...

  3. Vue3.0 使用 ref 判断目标 node 区域之外的点击事件(实现下拉框、弹窗关闭功能)

    有时候会遇到点击目标区域绑定事件 / 展示效果,然后点击目标区域之外的地方就关闭效果 / 触发另一事件,为了实现这样的功能,我们需要通过比对 node 节点来进行判断,在下面我会使用 Vue3.0 的 ...

  4. LayUi数据表格数据太多导致下拉框卡顿问题

    LayUi数据表格数据太多导致下拉框卡顿问题 layui数据表格(详见官网) 根据官网示例 做出数据表格 示例根据官网表格展示 在layui官网 数据表格示例中 https://www.layui.c ...

  5. c mvc ajax 返回下拉框,SpringMVC之ajax+select下拉框交互常用方式

    Insert title here //ajax+select三种常用交互方式 window.οnlοad=function(){ test(); } function test(){ alert(& ...

  6. tkinter绘制组件(10)——组合框/下拉框

    tkinter绘制组件(10)--组合框/下拉框 引言 构思 样式与功能(初次构想) 样式与功能(二次构想) 布局 函数结构 闭合状态下拉框 选项框 整合选项框 展开与闭合 完整代码函数 效果 测试代 ...

  7. 使用bootstrap实现下拉框搜索功能

    背景 公司的小二后台有一个下拉框选择经销商的功能,由于选择的经销商过多,因此添加搜索功能. 前提 配置好Bootstrap相关的开发环境 主要内容 <div class="form-g ...

  8. 解决kendo ui的kendoDropDownList当下拉框在屏幕上方时,下拉框列表的数据窜位的问题

    kendoUI相关问题 我们有的人在使用kendo的下拉列表时,可能会出现下拉列表的框表分离的情况 解决方法就是:将body设置为决定路径 但是这种方式只适合谷歌,火狐,IE等常规浏览器,在360极速 ...

  9. php可输入的下拉框,jQuery实现可输入搜索文字的下拉框实例代码

    利用jQuery实现可输入搜索文字的下拉框 先看效果 功能:点击下拉框输入框时,自动显示下面的下拉列表,而且是根据输入框中输入的搜索添加,自动在后台查找,然后传到前台,展现页面. 用的的js: var ...

最新文章

  1. sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍
  2. 555定时器回差电压计算公式_555时基电路引脚解析
  3. .NET Core中使用Razor模板引擎
  4. 高级php程序员,php高级程序员该学什么
  5. openmv探索_4_AprilTag标记追踪
  6. leetcode [35]搜索插入位置/Search Insert Position 优雅的暴力可能比二分查找效率更高
  7. 拟阵论 贪心策略的数学基础
  8. 开源的东西,只是用来参考学习,要商用路途遥远
  9. [Js-Java SE]文件/文件夹复制(递归)
  10. flash 绘图API:绘制秀曲线图形
  11. pci规划的三个原则_LTE中PCI规划目的和原则
  12. python+scapy实现ARP欺骗
  13. codeforces 1567 A. Domino Disaster
  14. MFC9.0 Outlook控件的标题显示无法修改
  15. Ping IP时出现 request time out怎么解决?
  16. 开始topcoder
  17. Android Manifest详解
  18. 基于51单片机SJA1000 CAN通讯实现(C语言程序)
  19. Boom!!!计算机系统,从理解到爆炸,Bomblab
  20. CAS SSO 单点登录 【完整版】

热门文章

  1. php 中文 验证码,php 验证码 支持中文验证码
  2. MATLAB设计课题推荐及选择老师技巧
  3. 高德地图哪个语音包最好_高德地图VS百度地图,哪个更靠谱?
  4. marker 头像 高德地图_高德地图头像怎么更换 高德地图更换头像图文教程
  5. 太白山北坡旅游路线登顶攻略
  6. anbox 使用情况_Anbox让您在Linux桌面上运行Android应用程序
  7. armbian 下载加速
  8. greenDao的使用与封装
  9. 全双工和半双工的区别?
  10. 6 计算机网络 待更新