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…

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

企业内容管理-互联网应用 当你第一次听到企业内容管理这个名字&#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 系…

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

原标题&#xff1a;为啥东北考生都想去南方&#xff0c;而南方学生很少考东北&#xff0c;看看他们怎么说文/晓宁说教育高考对于众多考生来说&#xff0c;是人生中最重要的一场考试&#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内核为此专门…

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

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

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

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

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

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

文字投影_店铺门口投影灯,引领店铺新潮流

在社会的进步下&#xff0c;现在人们物质生活越来越好&#xff0c;在原来消费的基础上也更加注重消费时店铺的装修、氛围。装修精致、环境优雅的店铺不仅更加容易吸引顾客&#xff0c;并且更加容易让顾客打卡发圈&#xff0c;无形中也帮自己做了一波宣传。上次我们出去游玩的时…

实验5

一、 1 #ifndef MACHINEPETS_H2 #define MACHINEPETS_H3 #include<iostream>4 #include<string>5 using namespace std;6 class MachinePets7 {8 public:9 MachinePets(const string s) :nickname(s) {} 10 virtual string talk()0; 11 string getnick…

计算机网络ieee,博士生程珂论文连续两年被计算机网络顶级会议IEEE INFOCOM录用...

近日&#xff0c;第39届IEEE国际计算机通信会议(IEEE International Conference on Computer Communications, IEEE INFOCOM 2020)录用结果揭晓&#xff0c;陕西省网络与系统安全重点实验室沈玉龙教授课题组博士生程珂的论文《A Lightweight Auction Framework for Spectrum Al…

去除标题_资深运营导师-云中教你轻松写标题

一、标题作用解读标题对于产品的意义买家购买逻辑想到一款产品&#xff0c;并知道他的名称去网上搜索&#xff0c;看到图片等信息类比价格评价等内容&#xff0c;下单收到货和自己根据标题照片评判商品核心要点&#xff1a;买家是根据产品名字作为购买切入点&#xff1b;照片和…

报名学校计算机考试在哪里报,全国计算机等级考试报名流程

全国计算机等级考试报名流程全国计算机等级考试采用全国统一命题&#xff0c;统一考试的形式&#xff0c;各科目均为上机操作考试。1&#xff0e;上网填报基本信息考生可任意选择地点并在规定时间内上网填报、修改及查询本人信息。填报过程分为登录、查看提示信息、输入并提交报…

卸载一直在创建还原点_如何创建系统还原点以及如何恢复?

如何创建系统还原点1、在搜索框中输入“创建还原点”并打开。2、在“系统保护”选项卡中点击“创建”。3、为此次还原点添加备注描述&#xff0c;此处命名为测试&#xff0c;点击创建即可。恢复系统至上一个还原点1、在刚才的“系统保护”界面中点击“系统还原”。2、在弹出的系…

学生党的Surface Pro 5乞丐版使用体验

因为已经装了台式机&#xff0c;大一开学时买的厚重且续航差的华硕游戏本&#xff08;i5GTX950M8G)对我这个考研党已经显得不合适了。恰巧有一同学笔记本坏了&#xff0c;我便将游戏本低价出了&#xff0c;然后用两三倍的价格&#xff0c;入手了surface pro5 (new surface)的最…

2018计算机河北省高考试题,2018年河北高考物理压轴试题【含答案】

2018年河北高考物理压轴试题【含答案】18&#xff0e;如图4所示&#xff0c;由粗细均匀的电阻丝制成的边长为L的正方形金属框向右匀速运动&#xff0c;穿过方向垂直金属框平面向里的有界匀强磁场&#xff0c;磁场宽度d2L。从ab边刚进入磁场到金属框全部穿出磁场的过程中&#x…