用Ajax实现页面的分页原理
来源:互联网 发布:linux操作系统下载官网 编辑:程序博客网 时间:2024/06/01 17:26
Ajax局部刷新技术,相比之前的简易论坛的severlet跳转技术,每次改变都会跳转刷新整个页面。Ajax不用刷新整个页面,只是局部刷新。
1.首先在数据库中创建要展示的表,链接数据库,在Javaben中写查询所有要展示内容,这里不再赘述http://blog.csdn.net/sinat_32133675/article/details/74987164
2.编写severlet,在severlet中调用javaben中的方法通过json包返回json文件
将从数据库中的找到的数据(保存在list中),转换成json文件(string类型),代码如下:
//json文件 public String listToJson(List list){ JSONArray json = JSONArray.fromObject(list); return json.toString(); }
在severlet中编写的代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String userName = request.getParameter("userName"); UserDao userDao = new UserDao(); int n=userDao.findById(userName); out.print(n); out.flush(); out.close(); }
这里只重写了doGet方法,doGet和doPost的区别就是前者在地址栏完成值得传递,后者不在地址栏显示,更安全。(PS:用户登录一定要使用doPost)。与之前的severlet跳转不同,我们可以看到,代码中并没有你跳转页面,这时需要编写一个js的文件调用
3.在jsp页面的布局和jQ代码如下:
jQ+Ajax代码:
$(function(){ function fenye(begin,end){ var t=$("table:eq(0)"); //注意json文件中的所有变量都是局部变量,无法通过值得传递拿出来,这里将长度作为一个属性加到 //标签中,在外面通过标签获取(*********) $.getJSON("servlet/FristSrv",null,function(k){ //len=$(k).length; //console.log(len) //var len=0; $("table:eq(0) tbody").html(""); var len=$(k).length; $(k).each(function(i,n){ //alert(n.userName); if(i<end&&i>=begin){ t.attr({"begin":begin,"end":end,"length":len}); //t.append("<tbody>") t.append("<tr class='show'><td>"+n.subject+"</td><td>"+n.userName+"</td><td>"+n.createTime+"</td><td>"+n.createTime+"</td><td>"+n.hitCont+"</td></tr>"); //t.append("</tbody>") } }) //console.log(len+"---") }) } fenye(0,3);//这里设置的每行显示5个元素,初始化首页的显示0-5 $("#nextpage").click(function(){ var begin =parseInt( $("table:eq(0)").attr("begin"))+3; var end =parseInt( $("table:eq(0)").attr("end"))+3; var len = parseInt($("table:eq(0)").attr("length")); //console.log(end); if(end-3<len) { //$(".show").hide();//每点一次增加5条,这里的隐藏式隐藏已经有的 //$("table:eq(0)").html(""); fenye(begin,end); } }) $("#lastpage").click(function(){ var pagesize = 0; var len = parseInt($("table:eq(0)").attr("length")); if(len%3==0){ pagesize=parseInt(len/3); }else{ pagesize=parseInt(len/3)+1; } //console.log(len); var begin=(pagesize-1)*3; var end=(pagesize-1)*3+3; fenye(begin,end); }) $("#fristpage").click(function(){ fenye(0,3); }) $("#previouspage").click(function(){ var begin =parseInt( $("table:eq(0)").attr("begin"))-3; var end =parseInt( $("table:eq(0)").attr("end"))-3; var len = parseInt($("table:eq(0)").attr("length")); //console.log(end); if(end-3>=0) { //$(".show").hide();//每点一次增加5条,这里的隐藏式隐藏已经有的 //$("table:eq(0)").html(""); fenye(begin,end); } })})
代码中点击下一页,上页已经显示的内容就要隐藏掉,原来使用的.hide()方法。后来,考虑到工作中表页数过多的可能性,选择将上页内容通过.html(“”)清零。但是由于我的表内容是动态生成的,表头在jsp中单独打出来的,清零的时候会把表头顺表清掉。(这里卡了我好久)
解决方法:在jsp的表头文件用<thead>
标签包起来,动态生成表内容的部分就会自动划分为<tbody>
的内容(在sougou浏览器中是这样,其他效果我没试),每次点击按钮都会调用代码$("table:eq(0) tbody").html("");
清掉点击之前展示的内容。
效果展示:
- 用Ajax实现页面的分页原理
- 用ajax+jQuery 实现页面加载更多(另类的分页)
- 用Ajax实现分页和删除操作的jsp页面源代码
- 页面分页的实现
- 分页技术原理与实现(三)——无刷新的Ajax分页技术
- 分页技术原理与实现(三)——无刷新的Ajax分页技术
- ajax实现的原理
- ajax的实现原理
- ajax页面不刷新的分页
- 生成静态页面ajax实现原理
- yii gridview ajax分页的原理。
- jsp页面的分页实现
- 列表分页查询的实现jquery 和Ajax的联合使用 HTML页面
- PHP + AJAX 实现无刷新分页 不刷新页面实现分页 PHP AJAX
- PHP + AJAX 实现无刷新分页 不刷新页面实现分页 PHP AJAX
- 用Extjs实现分页自动加载数据的Ajax实现
- easyui分页实现的原理
- 分页查询的实现原理
- PowerBI 学习笔记(3)—— 服务
- java设置运行环境
- 55个基础金融名词
- Spring框架概述
- Java 代码性能优化
- 用Ajax实现页面的分页原理
- CocosCreator使用protobuf
- BZOJ 2645 陶陶吃苹果 [树形DP]
- 【Java】业务层和数据访问层的区别
- 利用DVWA学习sqlmap(1)
- 决策树分类器在Scikit-learn的使用小结
- Android drawBitmapMesh 扭曲图像
- Mac里配置Eclipse + GDB
- Macaca+HTMLTestRunner测试报告模式修改,基于python unittest 测试框架扩展