千家信息网

如何用jquery+Ajax实现简单分页条

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章主要介绍了如何用jquery+Ajax实现简单分页条的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用jquery+Ajax实现简单分页条文章都会有所收获,下面
千家信息网最后更新 2024年09月21日如何用jquery+Ajax实现简单分页条

这篇文章主要介绍了如何用jquery+Ajax实现简单分页条的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用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+Ajax实现简单分页条"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何用jquery+Ajax实现简单分页条"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0