Pagination(分页) 从前台到后端总结

一:效果图

下面我先上网页前台和管理端的部分分页效果图,他们用的是一套代码。

                                 

回到顶部(go to top)

二:上代码前的一些知识点

此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢。

描述参数值 
maxentries总条目数 必选参数,整数 
items_per_page 每页显示的条目数 可选参数,默认是10 
num_display_entries连续分页主体部分显示的分页条目数 可选参数,默认是10 
current_page 当前选中的页面 可选参数,默认是0,表示第1页 
num_edge_entries两侧显示的首尾分页的条目数可选参数,默认是0 
link_to分页的链接 字符串,可选参数,默认是"#" 
prev_text “前一页”分页按钮上显示的文字字符串参数,可选,默认是"Prev" 
next_text “下一页”分页按钮上显示的文字 字符串参数,可选,默认是"Next" 
ellipse_text 省略的页数用什么文字表示可选字符串参数,默认是"…" 
prev_show_always是否显示“前一页”分页按钮布尔型,可选参数,默认为true,即显示“前一页”按钮 
next_show_always 是否显示“下一页”分页按钮 布尔型,可选参数,默认为true,即显示“下一页”按钮 
callback 回调函数 默认无执行效果 
回到顶部(go to top)

三:前台代码部分

复制代码
 1 var pageSize =6;     //每页显示多少条记录2 var total;           //总共多少记录3  $(function() {4     Init(0); //注意参数,初始页面默认传到后台的参数,第一页是0;    5         $("#Pagination").pagination(total, {   //total不能少        6              callback: PageCallback,            7              prev_text: '上一页',             8              next_text: '下一页',              9              items_per_page: pageSize,              
10              num_display_entries: 4,        //连续分页主体部分显示的分页条目数
11              num_edge_entries: 1,           //两侧显示的首尾分页的条目数 
12          });             
13         function PageCallback(index, jq) {     //前一个表示您当前点击的那个分页的页数索引值,后一个参数表示装载容器。  
14              Init(index);      
15         }
16     });
17  
18  function Init(pageIndex){      //这个参数就是点击的那个分页的页数索引值,第一页为0,上面提到了,下面这部分就是AJAX传值了。
19      $.ajax({
20         type: "post",
21       url:"../getContentPaixuServ?Cat="+str+"&rows="+pageSize+"&page="+pageIndex,
22       async: false,
23       dataType: "json",
24       success: function (data) {
25             $(".neirong").empty();
26 /*             total = data.total; */
27             var array = data.rows;
28             for(var i=0;i<array.length;i++){
29                 var info=array[i];
30                 
31                 if(info.refPic != null){
32                 $(".neirong").append('<dl><h3><a href="'+info.CntURL+'?ContentId='+info.contentId+'" title="'+info.caption+'" >'+info.caption+'</a></h3><dt><a href="sjjm.jsp?ContentId='+info.contentId+'" title="'+info.caption+'" ><img src="<%=basePathPic%>'+info.refPic+'" alt="'+info.caption+' width="150" height="95""></a></dt>  <dd class="shortdd">'+info.text+'</dd><span>发布时间:'+info.createDate+'</span></dl>') 
33                 }else{
34                 $(".neirong").append('<dl ><h3><a href="'+info.CntURL+'?ContentId='+info.contentId+'" title="'+info.caption+'" >'+info.caption+'</a></h3><dd class="shortdd">'+info.text+'</dd><span>发布时间:'+info.createDate+'</span></dl>');
35                 };
36          }       
37       },
38       error: function () {
39           alert("请求超时,请重试!");
40       }
41     });  
42 };
复制代码

 

回到顶部(go to top)

四:后台部分(java)

我用的是MVC 3层模型

servlet部分:(可以跳过)

复制代码
 1     public void doPost(HttpServletRequest request, HttpServletResponse response)2             throws ServletException, IOException {3 4         response.setContentType("text/html;charset=utf-8");5         PrintWriter out = response.getWriter();6         //获取分页参数7         String p=request.getParameter("page"); //当前第几页(点击获取)8         int page=Integer.parseInt(p);9         
10         String row=request.getParameter("rows");    //每页显示多少条记录
11         int    rows=Integer.parseInt(row);
12         
13         String s=request.getParameter("Cat");   //栏目ID
14         int indexId=Integer.parseInt(s);
15         JSONObject object=(new ContentService()).getContentPaiXuById(indexId, page, rows);        
16         out.print(object);
17         out.flush();
18         out.close();
19     }
复制代码

Service部分:(可以跳过)

复制代码
    public JSONObject getContentPaiXuById(int indexId, int page, int rows) {JSONArray array=new JSONArray();List<Content>contentlist1=(new ContentDao()).selectIndexById(indexId);List<Content>contentlist=paginationContent(contentlist1,page,rows);for(Content content:contentlist){JSONObject object=new JSONObject();object.put("contentId", content.getContentId());object.put("caption", content.getCaption());object.put("createDate", content.getCreateDate());object.put("times", String.valueOf(content.getTimes()));object.put("source", content.getSource());object.put("text", content.getText());object.put("pic", content.getPic());object.put("refPic", content.getRefPic());object.put("hot", content.getHot());object.put("userId", content.getAuthorId().getUserId());int id = content.getAuthorId().getUserId();String ShowName = (new UserService()).selectUserById(id).getString("ShowName");object.put("showName", ShowName);array.add(object);}JSONObject obj=new JSONObject();obj.put("total", contentlist1.size());obj.put("rows", array);return obj;}
复制代码

获取出每页的的起止id(这部分是重点),同样写在Service中,比如说假设一页有6条内容,那么第一页的id是从1到6,第二页的id是从7到12,以此类推

复制代码
 1     //获取出每页的内容 从哪个ID开始到哪个ID结束。2     private List<Content> paginationContent(List<Content> list,int page,int rows){3         List<Content>small=new ArrayList<Content>();4         int beginIndex=rows*page;       //rows是每页显示的内容数,page就是我前面强调多次的点击的分页的页数的索引值,第一页为0,这样子下面就好理解了!5         System.out.println(beginIndex);6         int endIndex;7         if(rows*(page+1)>list.size()){   8             endIndex=list.size();        9         }
10         else{
11             endIndex=rows*(page+1);
12         }
13         for(int i=beginIndex;i<endIndex;i++){  
14             small.add(list.get(i));  
15         }  
16         return small;
17     }
复制代码

Dao层:(可以跳过)

复制代码
 1      public List selectIndexById(int indexId){2          List<Content>list=new ArrayList<Content>();3          try{4              conn = DBConn.getCon();5              String sql = "select * from T_Content,T_User where T_Content.AuthorId = T_User.UserId and CatlogId=? order by CreateDate desc";6              pstm = conn.prepareStatement(sql);7              pstm.setInt(1, indexId);8              rs = pstm.executeQuery();9              SimpleDateFormat ff=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
10              while(rs.next()){
11                 Content content = new Content();
12                 content.setContentId(rs.getInt("ContentId"));
13                  content.setCaption(rs.getString("Caption"));
14                  content.setCreateDate(f.format(rs.getTimestamp("CreateDate")));
15                  content.setTimes(rs.getInt("Times"));
16                  content.setSource(rs.getString("Source"));
17                  content.setText(rs.getString("Text"));
18                  content.setPic(rs.getString("Pic"));
19                  content.setRefPic(rs.getString("RefPic"));
20                  content.setHot(rs.getInt("Hot"));
21                  User user = new User();
22                  user.setUserId(rs.getInt("UserId"));
23                  content.setAuthorId(user);
24                  Catlog catlog = new Catlog();                //CntURL待开发
25                  catlog.setCatlogId(rs.getInt("CatlogId"));
26                  content.setCatlog(catlog);
27                  list.add(content);
28              }
29          }catch(Exception e){
30              e.printStackTrace();
31          }finally{
32              DBConn.closeDB(conn, pstm, rs);
33          }
34          return list;
35      }
复制代码

 

以上就是网页所实现的分页代码,easy-ui部分的分页也可以参考以上代码。如果有所收获,支持一下哟,谢谢!

转载于:https://www.cnblogs.com/yulei126/p/6790059.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GridControl 选择列、复选框全选(上)

说明&#xff1a; GirdControl 中加入一列&#xff0c;这一列不是写在数据库中的&#xff0c;而是代码中加入的。 图示&#xff1a; 底层类代码&#xff1a; #region GridControl 全选/// <summary>/// 是否选中/// </summary>private static bool chkState false…

Allegro改动shape网络节点

使用Allegro时改动shape的网络节点方法&#xff1a; ①选择shape->Select Shape or Void/Cavity ②选择要改动的shape ③点击&#xff08;...&#xff09;改动网络节点的名字 ④改动完毕 转载于:https://www.cnblogs.com/claireyuancy/p/6804046.html

ELK套件FileBeat部署

目录 1.简介 2.下载 3.直接输出到ElasticSearch 4.输出到Logstash 5.更改nginx日志路径 6.logstash负载均衡 7.日志文件直接作为输入 1.简介 FileBeat用于文件数据采集并输出到ElasticSearch或Logstash中。 ELK搭建过程参见&#xff1a; ELK搭建及Java程序接入 2.下载…

MetricBeat(win/linux)部署 系统CPU内存等资源情况监控

目录 1.下载 2.linux系统监控 ​3.启用模块 4.windows系统监控 1.下载 下载MetricBeat的linux和windows版本 https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-oss-7.2.1-linux-x86_64.tar.gz https://artifacts.elastic.co/downloads/beats/metricbea…

android CoordinatorLayout使用

一、CoordinatorLayout有什么作用 CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能&#xff1a; 1、作为顶层布局 2、调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。CoordinatorLayout通过…

deepin15.11系统体验

目录 1.下载 2.安装 3.装好后的体验 4.命令情况 5.windows共享 6.总结 听说华为笔记本都预装deepin&#xff0c;下载下来体验下 vmware创建linux系统&#xff0c;版本选择Other Linux 4.x or later kernel 64-bit 1.下载 官网 https://www.deepin.org/ 从官网下载iso真心…

带视觉差的轮播图

最终结果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title><style>html {box-sizing: border-box;font-family: Open Sans, sans-serif;}*, *:befor…

深度终端:ubuntu等linux下好用的远程终端软件

终端好不好用&#xff0c;直接上图&#xff0c;有图有真相—— 这终端不错啊&#xff0c;可以添加远程链接信息&#xff0c;像xshell似的&#xff0c;比ubuntu那些的终端强多了&#xff0c;每次都得一步步连。 怎么装&#xff1f; sudo apt install -y deepin-terminal PS&…

三国人物共现网络

三国部分人物共现图 转载于:https://www.cnblogs.com/jzssuanfa/p/6814865.html

Spark单独集群模式部署

目录 网络配置 SSH 免密码登录 部署 执行测试 网络配置 192.168.81.157 node1 master 192.168.81.158 node2 slave1 192.168.81.159 node3 slave2 相同的配置先在一个节点上配置&#xff0c;配置完成后复制到其它节点上。 vi /etc/hosts 192.168.81.157 node1 192.168.…

10.1.2 Document类型【JavaScript高级程序设计第三版】

JavaScript 通过Document 类型表示文档。在浏览器中&#xff0c;document 对象是HTMLDocument&#xff08;继承自Document 类型&#xff09;的一个实例&#xff0c;表示整个HTML 页面。而且&#xff0c;document 对象是window 对象的一个属性&#xff0c;因此可以将其作为全局对…

Ubuntu18.04 Flutter开发环境搭建

目录 flutter安装 android studio安装 Android Studio创建Flutter项目 运行应用程序 flutter安装 下载flutter https://flutter.dev/docs/development/tools/sdk/releases?tablinux https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_…

STL浅析——序列式容器vector的数据结构

vecotr 一词原来的意思是&#xff1a;矢量&#xff0c;向量&#xff0c;航向&#xff0c;顾名思义指的就是类似于数组的一个存储数据的序列&#xff0c;因此所采用的数据结构非常简单&#xff1a;连续的线性空间&#xff0c;它以两个迭代器 _M_start 和 _M_finish 分别指向配置…

“约见”面试官系列之常见面试题之第一百零一篇之vue-router传参(建议收藏)

vue-router传递参数分为两大类 编程式的导航 router.push声明式的导航 <router-link> 编程式的导航 router.push 编程式导航传递参数有两种类型&#xff1a;字符串、对象。 字符串 字符串的方式是直接将路由地址以字符串的方式来跳转&#xff0c;这种方式很简单但是不…

“约见”面试官系列之常见面试题之第一百零二篇之vue-router的两种模式(建议收藏)

众所周知&#xff0c;vue-router有两种模式&#xff0c;hash模式和history模式&#xff0c;这里来谈谈两者的区别。 hash模式 hash模式背后的原理是onhashchange事件,可以在window对象上监听这个事件: 上面的代码可以通过改变hash来改变页面字体颜色&#xff0c;虽然没什么用…

olive videoeditor开源跨平台视频编辑器

目录 简介 官网 使用 简介 olive是开源的视频编辑软件&#xff0c;目前下载版本为Alpha版&#xff0c;但已基本可用。 本文讲解添加图片、特效及文字&#xff0c;最后导出视频的简单过程。 官网 Olive - Professional Open-Source Video Editor 下载地址 Olive - Profes…