分页
应用于页面数据特别多的情况
作用:
- 加快数据查询速度
- 方便用户操作
利于页面的布局
思路:
- 确定表中总的数据行数
- 计算页面数量:页数 = 总行数 / 每页行数
- 编写分页查询的方法
select * from 表名 limit 开始行数,长度 包装数据到Java对象中,发送给JSP
包装分页数据的实体类:
public class Page<T> { //每页的行数 public static final int PAGE_SIZE = 10; //保存分页的数据 private List<T> data; //保存页面数量 private int pageCount; //保存当前页数 private int currentPage; .... }
确定表中总的数据行数
select count(*) from 表
在JdbcUtils中添加查询行数的方法
这个方法有点复杂其实,dbtuils中有个专门做聚合函数查询的函数是很好用的
/**
* 查询行数
*/
public static int queryCount(String sql,Object... params){
try {
return runner.query(sql, new ResultSetHandler
@Override
public Integer handle(ResultSet rs) throws SQLException {
//将数据库游标指向第一行
rs.next();
//返回唯一的一列数据(行数)
return rs.getInt(1);
}
}, params);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
DAO层编写并实现:
int selectUserCount(); List<User> selectUsersLimit(int start,int length);
Service层定义并实现:
@Override public Page<User> selectUsersPage(int currentPage) { //查询总行数 //计算出总的页数 //通过当前页数执行分页查询 //把总页数,当前页数,数据集合包装到Page对象中 //返回Page对象 return null; }
在UserServlet添加方法:selectUsersPage
- 获得当前页数参数
- 如果页数为空就赋值默认为1
- 调用Service执行分页查询
- 保存数据,并跳转到users.jsp
登录Servlet跳转分页查询的方法
修改users.jsp ${users} ---> ${page.data}
实现分页超链接:
- 按page.pageCount进行固定次数循环,绘制超链接
<a href="user.do?m=selectUsersPage&pageNo=${i}">${i}</a>
实现上一页和下一页
Bootstrap
就是进入官网,看着官网的例子自己进行套用即可
- 如何利用把后台的数据拿到页面去灵活的显示在下拉列表框,根据后台的变动而变动。可以把option外面套一个EL表达式的forEach循环。
- 有的是死的可以不用从后台请求。
来源:https://www.cnblogs.com/macht/p/11653781.html