JavaWeb的分页

1.什么是分页

第N页/共M页   首页  上一页 1 2 3 4 5 6 7 8 9 下一页 尾页  [  ]  go

  分页的优点:只查询一页,不用查询所有页!

2.分页数据

  页面的数据都是由Servlet传递过来的!

  Servlet:

  1.*当前页:pageCode,pc;

    >pc:如果页面没有传递当前页码,那么Servlet默认是第一页,或者按页面传递的为准!

  2.*总页数:totalPages,tp

    >tp:总记录数/每页记录数

  3.*总记录数:totalRecored,tr

    >tr:dao来获取,select count(*) from 表;

  4.*每页记录数:业务数据或叫系统数据!(由我们自己来定义)

  5.*当前页数据:beanList

  6.*url

3.数据的传递

  这些分页数据总要在各层之间来回传递!

我们把这些分页数据封装到一个Javabean中,它就叫分页Bean,例如:PageBean

 1 package cn.itcast.cstm.domain;
 2 
 3 import java.util.List;
 4 
 5 public class PageBean<T> {
 6     private int pc;// 当前页码page code
 7 //    private int tp;// 总页数total page---不需要了,只需get得到
 8     private int tr;// 总记录数total record
 9     private int ps;// 每页记录数page size
10     private List<T> beanList;// 当前页的记录
11     
12     private String url;//它就是url后的条件!
13 
14     public String getUrl() {
15         return url;
16     }
17 
18     public void setUrl(String url) {
19         this.url = url;
20     }
21 
22     public int getPc() {
23         return pc;
24     }
25 
26     public void setPc(int pc) {
27         this.pc = pc;
28     }
29 
30     /**
31      * 计算总页数
32      * @return
33      */
34     public int getTp() {
35         // 通过总记录数和每页记录数来计算总页数
36         int tp = tr / ps;
37         return tr%ps==0 ? tp : tp+1;
38     }
39 
40 //    public void setTp(int tp) {
41 //        this.tp = tp;
42 //    }
43 
44     public int getTr() {
45         return tr;
46     }
47 
48     public void setTr(int tr) {
49         this.tr = tr;
50     }
51 
52     public int getPs() {
53         return ps;
54     }
55 
56     public void setPs(int ps) {
57         this.ps = ps;
58     }
59 
60     public List<T> getBeanList() {
61         return beanList;
62     }
63 
64     public void setBeanList(List<T> beanList) {
65         this.beanList = beanList;
66     }
67 }

4.分页在各层中的处理

  *页面:给出分页相关的链接们!

    >页面需要给Servlet传递什么:有可能传递pc(当前页码)

  *Servlet:创建PageBaen对象,给PageBean所有的属性赋值,然后传递给页面。

    >Servlet需要给Dao传递

  *Service:调用dao层方法。(中转)

  *Dao:

    >tr(总记录数):select count(*)  表名;

    >beanList:select *from 表名 limit x, y;(从数据库中查询从第x行开始,查y条记录---是MySQL的方言)

 

 5.显示分页页码列表

1 2 3 4 5 6 7 8 9 10

  # 最多显示多少个页码!(暂定为10);

  # 当前页,在页码中列表中的位置,定为6;

  只需要当前页码来定出来页码表!

  定下来页码列表只需要两样数据:

    begin

    end

    10 11 12 13 14 (15) 16 17 18 19

  需要使用pc来推算出begin和end

  begin=pc-5 

  end=pc+4

计算公式:

  # 如果总页数<=10(列表长度),那么begin=1,end=总页数

  # 使用公式计算:begin=pc-5,end=pc+4;

    # 头溢出:当begin<1时,让begin=1;

    # 尾溢出:当end>${tp}最大页数,让end=${tp}

 6.在超链接中要保留参数(搜索时的条件)

   当使用多条件查询后,然后再点击第二页时,这个第二页超链接没有条件了,所以会丢失条件,所以我们需要在页面上的所有链接都要保留条件!

   我们要把条件以一个字符串的形式保存到PageBean的url中!这个任务交给Servlet!

也就是获取请求的路径及参数(参数中不包括当前页pc)

    /*** 截取url*    /项目名/Servlet路径?参数字符串* @param request* @return*/private String getUrl(HttpServletRequest request){String contextPath=request.getContextPath();//获取项目名String servletPath = request.getServletPath();//获取Servlet路径String queryString = request.getQueryString();//获取?之后的参数//判断参数部分是否包含pc这个参数,如果包含,需要截取下去,不要这一部分。if(queryString.contains("&pc=")){//返回指定子字符串在此字符串中最右边出现处的索引int index=queryString.lastIndexOf("&pc=");queryString=queryString.substring(0, index);}return contextPath+servletPath+"?"+queryString;}

 

 把这次请求得到的路径保存到PageBean对象中,然后可以在页面获取,从而不会丢失参数,完成查询的分页。

 

注意:在搜索查询的时候,也就是在Dao层的SQL语句上增加where子句,返回一个PageBean(其中BeanList是查询得到的对象集合),然后再分页实现。

    请求的时候的form表单的请求方式为GET,这样所得的URL路径中包含查询的参数条件(POST方式不带查询的参数条件),然后再处理编码问题得到参数条件。完成搜索查询。

 

转载于:https://www.cnblogs.com/xjs1874704478/p/10923289.html

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

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

相关文章

中反应器体积_缠绕管式反应器大幅提高能效,移热能力较列管式反应器提升逾50%...

武汉东海石化重型装备有限公司与中科院过程工程研究所联合开展的高效缠绕管式反应器研发课题二期研究日前结题。该研究建立了一套与不同工作原理相适应的缠绕管式反应器设计方法&#xff0c;使缠绕管式反应器的移热能力较列管式固定床反应器提升逾50%&#xff0c;可极大提高企业…

【异常(待解决)】org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respond...

一、记录下异常堆栈信息 2019-06-01 10:26:58.246 [http-nio-9850-exec-3] ERROR weixin.popular.client.LocalHttpClient - execute error org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respondat org.apache.http.impl.conn.DefaultHttpRespon…

工作389-移动端控制

<meta name"viewport" content"widthdevice-width, initial-scale1.0,maximum-scale1.0, user-scalable0">

企业内容管理-互联网应用

企业内容管理-互联网应用 当你第一次听到企业内容管理这个名字&#xff0c;很容易联想到ERP这种复杂无比的系统。实际上也确实如此&#xff0c;目前几大主要的ECM系统都是复杂无比&#xff0c;所以我想从互联网应用&#xff0c;一般网民可以使用的角度来谈谈企业内容管理。 从…

计算机做游戏到大学要学什么,大学学什么专业,毕业才能从事电竞行业?

原标题&#xff1a;大学学什么专业&#xff0c;毕业才能从事电竞行业&#xff1f;电竞可不只是打游戏这么简单。想必最近很多同学已经陆陆续续收到录取通知书了&#xff0c;大学的美好生活已经在等着你们啦&#xff01;今天化学姐想和大家聊聊就业已经游戏行业相关的事儿。电子…

layui中table监听单元格_最全总结 | 聊聊 Python 办公自动化之 PPT(中)

点击上方 “AirPython”&#xff0c;选择 “加为星标”第一时间关注 Python 技术干货&#xff01;1. 前言上一篇文章简单地介绍了 PPT 的文档结构&#xff0c;并使用 python-pptx 这个依赖库完成对 PPT 文档最基本的操作最全总结 | 聊聊 Python 办公自动化之 PPT(上)作为 PPT 系…

工作383:css使absolute相对于父容器进行定位而不是以body(为什么绝对定位(absolute)的父级元素必须是相对定位(relative))...

借知乎的回答如下解释&#xff1a; 首先&#xff0c;我想告诉你的是&#xff0c;如果父级元素是绝对定位&#xff08;absolute&#xff09;或者没有设置&#xff0c;里面的绝对定位&#xff08;absolute&#xff09;自动以body定位。这句话是错的。 正确的是&#xff1a;只要父…

如何高效的清理系统盘空间?

我们一般会把系统安装在C盘&#xff0c;但是使用一段时间后会发现C盘的空间越来越少。尤其我们做开发的&#xff0c;会在电脑中装上很多软件的。比如我的机器上C盘空间 15G&#xff0c;平时安装软件时只要可以选择我都会把它装到其他盘的&#xff0c;但是半年下来&#xff0c;C…

东北考生到南方学计算机,为啥东北考生都想去南方,而南方学生很少考东北,看看他们怎么说...

原标题&#xff1a;为啥东北考生都想去南方&#xff0c;而南方学生很少考东北&#xff0c;看看他们怎么说文/晓宁说教育高考对于众多考生来说&#xff0c;是人生中最重要的一场考试&#xff0c;如果能在高考中发挥出好成绩&#xff0c;就可以顺利的考上一所自己理想的大学。按照…

[html] 如何给table中的某一列设置固定宽度

[html] 如何给table中的某一列设置固定宽度 table{ table-layout:fixed} table tr td:nth-child(n){width:100px}个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

用excel制作双层饼图_双层饼图,让你的工作更出彩

在Excel中饼图是很常见的图表类型&#xff0c;做起来也很简单&#xff0c;相信大家都会做。但双层饼图你会做吗&#xff1f;如下图所示&#xff0c;根据左侧的数据源&#xff0c;做出右侧的双层饼图。这么漂亮的双层饼图是怎么制做出来的呢&#xff1f;今天我就来给大家分享一下…

Comet OJ - 2019 六一欢乐赛

传送门 #A&#xff1a; 思路&#xff1a;等差数列求和,看成俩次12… n,多加的n减去&#xff0c;所以 ans n*(n1) - n。 AC代码&#xff1a; 1 #include<iostream>2 #include<algorithm>3 #include<string>4 using namespace std;5 int main()6 {7 int n…

三个子系统_「正点原子Linux连载」第五十八章Linux INPUT子系统实验(一)

1)实验平台&#xff1a;正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号&#xff0c;获取更多资料&#xff1a;正点原子第五十八章Linux INPUT子系统实按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c;Linux内核为此专门…

湖南大学计算机与通信学院研究生,湖南大学计算机与通信学院2010年硕士研究生招生学科...

计算机考研学院简介计算机与通信学院前身为原湖南大学计算机科学系。1978年组建计算机教研室并开办计算机本科专业&#xff0c;1981年5月正式成立计算科学系&#xff0c;2001年10月正式成立计算机与通信学院。学院现有计算机应用技术博士授权点&#xff1b;计算机科学与技术、信…

【排序函数讲解】sort-C++

c标准库里的排序函数&#xff0c;用于对给定区间所有元素进行排序。头 文件是#include 使用 Sort&#xff08;&#xff09;在具体实现中规避了经典快速排序可能出现的、会导 致实际复杂度退化到 o&#xff08;n&#xff09;的极端情况。它根据具体情况使用不 同排序方法&#…

[html] HTML5拖拽事件的顺序是什么?

[html] HTML5拖拽事件的顺序是什么&#xff1f; ondragstart &#xff1a;源对象开始被拖动 ondrag&#xff1a;源对象被拖动过程中 ondragend&#xff1a;源对象被拖动结束ondragenter&#xff1a;源对象拖动着进入目标对象 ondragover&#xff1a;源对象拖动着悬停在目标对方…

【翻译】eXpressAppFramework QuickStart 业务模型设计(十)——在代码中实现数据验证...

这一讲&#xff0c;你将学到如何给业务对象和他们的属性设置规则。最终用户在执行赋值操作后将验证这些规则。你可以实现必填规则使得Position.Title属性不能为空。此规则将在Position对象保存的时候被验证。你还能够看到打破规则的界面提示。在此之前&#xff0c;我建议你去读…

注册机patch起什么作用_电机滑环起什么作用?

电机滑环起什么作用?发电机滑环就是我们传统的集电环&#xff0c;用于电机的换向器上作为导出导入电流的滑动接触体&#xff0c;它的导电、导热以及润滑性能良好&#xff0c;并具有一定的机械强度和换向性火花的本能。几乎所有的电机都使用碳刷&#xff0c;它是电机的重要组成…

统考计算机应用基础多少分及格,网络教育统考难吗?统考多少分及格?

我们可以知道网络教育统考科目主要就是考计算机和英语两个科目&#xff0c;一定是全部通过才能顺利拿到网络教育本科毕业证的。那么网络教育统考难吗&#xff1f;网络教育统考多少分及格&#xff1f;一、网络教育统考难吗网络教育统考难度实际上是不高的。网络教育与自考的统考…

《Java并发编程的艺术》之synchronized的底层实现原理

在学习锁优化时&#xff0c;对象头(Mark Word) 是必不可缺的一环&#xff0c;因为synchronized 用的锁是存在对象头里的。32位的虚拟机上对象头占64位&#xff08;8字节&#xff09;&#xff0c;64位的虚拟机上对象头占128位(16字节&#xff09;[^objectHead]&#xff1b;而不同…