结合SERVLET和JSP 实现分页功能
此功能的目的是分页显示数据,也就是说一页只显示部分数据,避免同一页数据过多影响用户体验
参考以下文章:
在粘贴how2java网站上的代码时要注意两个问题。
- 一个是要把HeroDAO.java文件中对应的数据库,用户名,密码修改为自己的;
- 另一个是how2java上的servlet配置方法都是用的WEB.XML, 但是上周我们学的是不用WEB.XML的版本。所以HeroListServlet不要直接复制粘贴,而应该
新建一个servlet文件,只粘贴public class HeroListServlet extends HttpServlet {
的内容,并且把相应的import给改掉。因为比如说
List<Hero> heros = new HeroDAO().list(start, count);
这行代码,List
需要import java.util.List;
,所以需要新引进几个包。
1.只显示5条数据
public List<Hero> list(int start, int count)
该方法用来控制一页显示五条数据。但是有一个问题我有点疑惑。为什么list(0,5)
就是第一页,list(5,5)
就是第二页?
以下是* MVC系列教材 (三)- 结合SERVLET和JSP 实现分页功能的解释
start表示开始的个数,count表示取多少条
比如 list(0, 5) , 即表示第一页,每页有5条数据
比如 list(5, 5) , 即表示第二页,每页有5条数据
以下是chatGPT的回答:
当调用list(0, 5)时,它将返回从第一个位置开始的5个元素,这是第一页。当您调用list(5, 5)时,它将返回从第六个元素开始的5个元素,这是第二页。
也就是说,start应该是数据开始条数的下标。下标从0计数。0-4共5条数据,放在第一页。5-9共5条数据,放在第二页。
显示效果:
2.下一页
效果:
点击下一页后:
3.上一页
点击上一页后:
4.第一页
点击首页后:
此处表格没有明显变化的原因是当前就在首页。但是可以在地址栏看到多了?start=0
。原因是在listHero.jsp增加了<a href="?start=0">[首 页]</a>
,
每次点击首页就会跳转到start=0
5.最后一页
逻辑几乎与步骤4一模一样。就是多了需要在HeroListServlet中计算last
点击末页后:
6.边界处理
目的是为了解决当前是第一页点击上一页看不到数据的问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvKZ7Aqo-1682238065584)(null)]
注意控制台:我在已经是第一页的情况下多次点击上一页,total保持不变
7. Bootstrap
有了Bootstrap的修饰后,明显感觉表格美观了很多。