怎么使用jquery和Ajax实现简单分页条效果
这篇“怎么使用jquery和Ajax实现简单分页条效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用jquery和Ajax实现简单分页条效果”文章吧。
创新互联公司主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务防城港,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
一、如果是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";//查询所有元组 ListcountList = 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实现简单分页条效果
分享链接:http://hbruida.cn/article/jgcsih.html