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

本文介绍了使用Bootstrap和jQuery,结合Struts2 MVC,实现(首页、上一页、下一页、尾页+下拉框跳转)的分页功能。文章强调该方法适用于页数不多的情况,因为页数过多时获取总记录数会较慢。详细讲解了Java后台Model、DAO层、Action层以及JSP层的实现步骤,并指出在JSP层的下拉框选择和onchange函数是关键。最后,提出了可以使用Ajax进行优化,以实现无刷新分页。

说在前头(本人用的是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;//注意这个,两个都要-1
	if(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" onchange="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分页,这样不刷新网页,更好



熟悉项目开发过程中SSM框架、JSP、Mysql使用,知道各技术之间的如何衔接; 考虑到部分学生只需要学习前台(买家)或是后台(后台),故将电商系统分为电商系统前台和电商系统后台两个项目, 当前课程包含电商系统前台和电商系统后台 该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架 2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等 3、数据库:Mysql 4、服务器:Tomcat项目开发涉及的功能: 1、项目以及数据库搭建 2、用户登录、退出3、用户注册、邮件发送、以及用户信息激活4、首页商品信息页面搭建以及查询功能实现5、查询商品明细6、加入商品至购物车、删除、更新、清除购物车商品信息7、确认订单信息8、订单页面搭建以及下订单功能实现9、查询我的购物车以及订单信息10、商品明细查看,商品修改,商品下架11、商品类型管理12、订单管理13、代码机器人使用等等其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值