本文实例为大家分享了jquery ajax实现分页条效果的具体代码,供大家参考,具体内容如下
一、如果是jsp页面的话,可以用el表达式和jstl标签制作一个分页条,没有什么难度。用el表达式和jstl标签实现的缺点就是无法实现异步效果,整个页面是重新刷新了一遍的。
二、如果是普通的html页面,当然是无法使用el表达式和jstl标签的,这时只能通过异步ajax的方式去实现。当然了,jsp页面两种方式都是可以使用的。
三、分页条,这里我是用ajax和jquery去做的。实现起来比较繁琐,代码特别长,因为都是拼接一大堆的字符串,然后使用html()方法或是append()方法去改变文档的内容。
四、事前分析
浏览器端需要发送给服务器端的参数有两个:
①当前的页码currentpage;
②页面的大小(一页显示几条记录)pagesize。
服务器端给浏览器端发送的是json格式的数据,也就是一个页面实体类pagebean。其中pagebean有如下字段:
①总记录数totalcount;
②总页码totalpage;
③每页的数据 list list;
④当前页码currentpage;
⑤每页显示的记录数pagesize。
这个pagebean支持泛型,代码如下:
public class pagebean{ private int totalcount; // 总记录数 private int totalpage ; // 总页码 private list list ; // 每页的数据 private int currentpage ; //当前页码 private int rows;//每页显示的记录数,也就是pagesize public int gettotalcount() { return totalcount; } public void settotalcount(int totalcount) { this.totalcount = totalcount; } public int gettotalpage() { return totalpage; } public void settotalpage(int totalpage) { this.totalpage = totalpage; } public list getlist() { return list; } public void setlist(list list) { this.list = list; } public int getcurrentpage() { return currentpage; } public void setcurrentpage(int currentpage) { this.currentpage = currentpage; } public int getrows() { return rows; } public void setrows(int rows) { this.rows = rows; } @override public string tostring() { return "pagebean{" "totalcount=" totalcount ", totalpage=" totalpage ", list=" list ", currentpage=" currentpage ", rows=" rows '}'; } }
要想做到分页,肯定要用到sql语句中的“limit”。举个例子说明一下含义。
select * from student limit 2,5;
具体含义:从student表当中查询数据,从索引为“2”的记录开始查询,往后查5条。
索引是从0开始的,所以上面的语句相当于查询了第3、第4、第5、第6、第7条记录,总共5条记录。
总而言之,第一个数字就是“从哪开始查”的意思,第二个数字就是“往后查几条”的意思。
这里的“从哪开始查”,需要计算出来。公式如下:
(currentpage-1)×pagesize
也就是当前页码减去一,括号,在乘以页面大小。
所以查询语句的伪代码如下:
select * from student limit (currentpage-1)×pagesize,pagesize;
对于总页码totalpage,可以通过总记录数totalcount和页面大小pagesize计算出来。代码如下:
totalpage=totalcount%pagesize==0?totalcount/pagesize:(totalcount/pagesize 1);
五、服务器端主要代码
import com.fasterxml.jackson.databind.objectmapper;
import domain.pagebean;
import domain.rainfall;
import org.springframework.jdbc.core.beanpropertyrowmapper;
import org.springframework.jdbc.core.jdbctemplate;
import util.jdbcutils;
import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import java.io.ioexception;
import java.util.list;
@webservlet("/viewrainbypageservlet")
public class viewrainbypageservlet extends httpservlet
{
protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception
{
jdbctemplate template=new jdbctemplate(jdbcutils.getdatasource());
string sql="select * from rain_fall limit ?,?";//查询部分元组
string sql2="select * from rain_fall";//查询所有元组
list countlist = template.query(sql2, new beanpropertyrowmapper(rainfall.class));
int totalcount=countlist.size();//从数据库获取总记录数
int totalpage;//先声明一下总的页码,总的页码需要根据客户端发送过来的数据进行计算
string currentpage = request.getparameter("currentpage");
string pagesize = request.getparameter("pagesize");
int intcurrentpage = integer.parseint(currentpage);//用户发来的当前页码
if(intcurrentpage==0)//用户点击上一页按钮,currentpage就减1,会出现减到0的情况
{
intcurrentpage=1;//如果用户的currentpage=0,直接把页码设为1,把第一页的数据返回给客户端
}
int intpagesize = integer.parseint(pagesize);//用户发来的页面大小
totalpage=totalcount%intpagesize==0?totalcount/intpagesize:(totalcount/intpagesize 1);//计算出总的页数
if(intcurrentpage>totalpage)//用户点击下一页按钮,currentpage就加1,会出现大于总页数的情况
{
intcurrentpage=totalpage;//把当前页码设为总页数
}
int startindex=(intcurrentpage-1)*intpagesize;//从索引为几的记录开始查询?
list list = template.query(sql, new beanpropertyrowmapper(rainfall.class),startindex,intpagesize);
objectmapper mapper=new objectmapper();
response.setcontenttype("application/json;charset=utf-8");//设置响应数据类型和字符编码
pagebean pagebean=new pagebean<>();//创建pagebean对象
//封装pagebean对象
pagebean.settotalcount(totalcount);
pagebean.settotalpage(totalpage);
pagebean.setlist(list);
pagebean.setcurrentpage(intcurrentpage);
pagebean.setrows(intpagesize);
//将数据写回客户端
system.out.println(pagebean);
mapper.writevalue(response.getoutputstream(),pagebean);
}
protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception
{
this.dopost(request, response);
}
}
六、前端代码(很长)
<%--
created by yingyong lao.
user: laoyingyong
date: 2019-12-10
time: 19:28
--%>
<%@ page contenttype="text/html;charset=utf-8" language="java" %>
查看降雨信息
降雨信息一览
id
地区
降雨量(mm)
月份
发布日期
七、效果展示

这只是一个简单的分页条,没有百度分页条“前五后四”的效果。当数据量变得非常庞大时,这个分页条就会占据很大的空间。有时间的话再优化一下吧。至于jquery代码,代码的注释里已经写得够清楚了,这里就不再做过多的解释。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
茵茵酱