【摘要】:完成本任务所用到的主要知识点:JavaBean 与动作JSP 内置对象假设有成百上千个商品,那么每次访问显示商品页面都列出所有的商品就不便于浏览了。例如在网络购物车中查询商品,假如商品显示页面每页显示pageSize 条商品,那么在数据库中就可以使用如下SQL 语句查询“第pageNo 页”的商品。在显示商品表格的最后一行放置了分页的信息和翻页的链接,每个链接都调用了一个JavaScript 函数。图上机6.11分页效果单击“下一页”,效果如图上机6.12 所示。
完成本任务所用到的主要知识点:
➢ JavaBean 与动作
➢ JSP 内置对象
假设有成百上千个商品,那么每次访问显示商品页面都列出所有的商品就不便于浏览了。为了避免这种情况,请为商品的显示页面实现分页功能。
分页的方式比较多,在这里使用比较常用的分页方式:在查询时通过SQL 语句进行分页,即每次查询时只查询某一页的数据。例如在网络购物车中查询商品,假如商品显示页面每页显示pageSize 条商品,那么在数据库中就可以使用如下SQL 语句查询“第pageNo 页”的商品。
上述SQL 语句根据id 筛选数据,先排除掉前面所有页的id,(pageNo-1)*pageSize就表示pageNo 页之前的所有页的记录条数,然后再从排除后剩下的数据中取出前pageSize 条数据就自然是pageNo 页的数据。
实际上,此分页方式主要就是构造一个SQL 语句,只需要传递pageSize(每页显示的记录数)和pageNo(页码,表示第几页)两个参数就可以实现分页。但是在页面上还需要提供“上一页”“下一页”等翻页的按钮,显示记录总数、当前第几页、共多少页等分页信息,而且一个网站不仅仅是某一页面需要使用分页,所以为了提高分页的功能的重用性,应该封装一个分页的JavaBean,就可以在页面中通过JavaBean 对象获取和设置分页信息。
(1)定义分页JavaBean(PageModel.java),代码如下。
在PageModel 中封装了分页的信息,包含分页数据、页面显示的数据条数、总页数、总记录数和页码等,并提供了这些信息的获取方法。
(2)修改商品数据访问类(GoodsDao.java),代码如下。(www.chuimin.cn)
在GoodsDao.java 中,getAllGoods()方法接收了两个参数,一个是pageSize,另外一个是pageNo,并且返回值为PageModel。在getAllGoods()方法中,首先根据pageSize 和pageNo 构造了SQL 语句,然后将查询后的数据封装到PageModel 中,并设置了PageModel 对象的pageSize、pageNo 和totalRecords 属性。最后将PageModel 对象返回。getCountGoods()方法用于查询总的记录数。
(3)修改商品显示页面(showGoods.jsp),代码如下。
在页面中,首先获取传入页面的参数pageSize 和pageNo,并调用GoodsDao 的getAllGoods()获取商品信息。若没有传递pageSize 和pageNo 参数,则使用默认值。在显示商品表格的最后一行放置了分页的信息和翻页的链接,每个链接都调用了一个JavaScript 函数。在JavaScript 函数中,主要是根据pageSize 和pageNo 构建URL,然后将URL 赋值给window.location 属性刷新页面。
(4)运行测试。
运行showGoods.jsp,效果如图上机6.11 所示。
图上机6.11 分页效果
单击“下一页”,效果如图上机6.12 所示。
图上机6.12 单击“下一页”按钮后的效果
相关推荐