Java项目实战第9天:分页功能的完善

今天是刘小爱自学Java的第108天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

image

昨天太晚了,前端写完后根本都没来得及测试,结果今天发现了一堆的问题。

本来是打算将分页跳过直接学搜索的。

毕竟听说我现在的这种实现方式特low,我查了下教程,后面也确实会再次讲到分页。

但是现在看来是不行了,忽视的点挺多的,对于很多知识点自己掌握的也不扎实。

所以还是花一个晚上的时间将该知识点完善下。

关于后台代码我昨天的笔记中有说明,现在的问题主要是前端的一些问题。

一、前端页面渲染

个人一直对这块不太重视,毕竟主要是Java后台代码的编写,所以基本都是一笔带过。

但是昨天发现自己连基本的一些点都还搞错,这是我无法原谅自己的。

所以打算详细理一理这个实现的思路。

1静态页面

静态页面的代码编写和页面效果就是如下图:

image

<ul><li>:这是一个有序标签,就是一个页面中有8条这样的数据。

当然这个8也是我们昨天自己定的,可以动态变化,其中有几个比较重要的参数。

也就是上图中的①②③④。

但是在静态页面中,这些数据是被写死了的,所以需要通过后台响应的数据动态拼接到页面中。

2后台响应的数据

通过浏览器F12可以打开控制台:

image

json数据,我们就可以用键值对来理解它。

①key值为routeData

这个是昨天后台设置的一个key,通过它可以取出其对应的value值。

也就是上图中的Array(8),一个存放有8条数据的集合。

②value值为集合

8条数据各不相同,我们看其中的一条数据,内容也是一个个键值对。

其中最先开始就说明了的4个参数分别为:rimage,rname,routeIntroduce,price。

所以思路就出来了:

  • 先根据key值routeData,取出Array(8)。

  • 然后将该集合使用each()方法遍历。

  • 再根据上面4个参数的key取出对应的value。

  • 最后利用“+”将数据拼接到页面中。

3前端页面拼接

image

关于发送请求就不再赘述了,直接说返回值,也就是result。

①result.routeData

这个取出的就是那个装有8条数据的集合,所以要将其遍历。

②遍历routeData

这个就是我昨天犯的最蠢的一个错误,调用的是each()方法,其有两个参数:

  • index:对应的是集合中的索引,该案例中也就是0-7。

  • route:对应的是集合中的元素。

还记上面一直在强调的4个重要参数么?

就是通过这个route来取出来的,根据key来取:

  • route.rimage。

  • route.rname。

  • route.routeIntroduce

  • route.price。

最后通过加号完成数据的动态拼接。

③渲染页面

通过id选择器找到对应的标签,也就是最先开始的那个有序标签<ul><li>

它的id为routePageList。

使用html()方法将拼接页面渲染到该标签中。

4最后做一个测试

image

点击其中一个分页页码数,

就会从数据库中根据页码数和页面数据大小(这里是8)查询出对应的8条数据。

每条数据各不相同,随着页码数动态变化。

5功能完善

前面的一个业务逻辑是,需要点击对应的页码之后才会发起请求,从而渲染出对应的数据。

但是如果没有点击页面,页面加载时应该是要有一个默认的页面的。

一般都是默认第一页数据,所以代码补全:

image

在页面加载事件中,调用getPageData方法:页面数为1,每页展示数量为8条

二、分页总页数

有的时候为了用户体验,会在分页中说明总记录数和总页数,如下图:

image

引入两个新的变量:总数据数totalCount,和总页数totalPage。

这两者之间有什么关系呢?

就又需要数学中的运算了,分类讨论:

如果总数据能被每页数据量整数:总页数=总数据数/页面数据量。

如果总数据不能被每页数据量整数:总页数=总数据数/页面数据量+1。

既然如此,使用三元运算符即可完成该功能。

好,思路分析完毕,开始写代码:

2分页总页数后台代码

因为是在分页中加入了一个小的功能,所以只需要在service层中增加代码即可:

image

①查询总数据数

通过dao层查询数据库中对应数据的总条数。

②根据总数据数计算总页数

用三元运算符表示,即:

总数据数能被页面数据量整除么?能就是前面的计算方法:不能就是后面的计算方式。

③数据封装

昨天只封装了routeData,今天等于是增加了一个小功能,还是以键值对的方式完成封装。

通过浏览器控制台可以查看对应的数据。

image

①sql语句编写

通过聚合函数count(*)可以编写查询数据量的sql语句。

其中rflag这个字段在数据库中是表示上下架的意思,1即为上架。

②jdbcTemplate查询

通过queryForObject()方法查询数据。

因为查询的返回值是一个int类型,所以参数为integer的class对象。

注意使用queryForObject方法需要主动的try…catch,具体原因我们几天前分析过源码。

3前端渲染

image

获取响应数据中的totalPage和totalCount,再将其动态拼接。

最后通过类选择器,渲染到对应标签。

当然这里类选择器不太准确,页面可能存在多个相同的类,最好在对应标签自定义一个id。

再使用id选择器,这是最保险的。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352