分页一

来源:互联网 发布:win7搜不到网络打印机 编辑:程序博客网 时间:2024/06/14 14:00

分页

如何分页:

首页 上一页 下一页 末页 当前页/总页数 总记录数

分页所需要的数据:

1)当前页
当前页根据页面的URL链接的参数获得
url: http://localhost:8080/shop/list.jsp?pageNo=1
(pageNo)当前页 = 1
2) 每页显示条数
由自己定义 pageSize = 3; 每页显示三条数据
3)列表显示的数据
查询数据的分页计算
#每页数据的开始下标 = (页码 - 1) * 每页条数
#第1页
SELECT * FROM t_student LIMIT 0,3;
#第2页
SELECT * FROM t_student LIMIT 3,3;
#第3页
SELECT * FROM t_student LIMIT 6,3;
4)总记录数
得到数据库中的所有记录数
select count(1) from t_student 
5)总页数

总页数 = (总记录数 % 每页显示条数) > 0 ? (总记录数 / 每页显示条数) + 1 : (总记录数 / 每页显示条数)


pojo类

public class Student {

private int id;
private String name;
private String sex;
private int age;
private int grade;
private String introduce;
private String img;

public Student(){
}


dao层

/**
* 分页查询学生信息
* @param pageNo页码
* @param pageSize每页条数
* @return
*/
public List<Student> queryStudent(int pageNo, int pageSize);

/**
* 得到学生信息的总条数
* @return
*/
public int getStudentCount();

dao的实现类

@Override
public List<Student> queryStudent(int pageNo, int pageSize) {
String sql = "select * from t_student limit ?,?";
//每页数据的开始下标 = (页码[pageNo] - 1) * 每页条数[pageSize]
int startIndex = (pageNo - 1) * pageSize;
Object[] params = new Object[]{startIndex,pageSize};
List<Student> students = new ArrayList<Student>();
ResultSet rs = super.query(sql, params);
try {
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
int age = rs.getInt("age");
int grade = rs.getInt("grade");
String introduce = rs.getString("introduce");
String img = rs.getString("img");
Student student = new Student(id, name, sex, age, grade, introduce, img);
students.add(student);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
super.close();
}
return students;
}


@Override
public int getStudentCount() {
String sql = "select count(1) records from t_student";
Object[] params = new Object[]{};
nt records = 0;
ResultSet rs = super.query(sql, params);
try {
if(rs.next()){
records = rs.getInt("records");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
super.close();
}

return records;
}

service层忽略


jsp页面


<%
//页码
int pageNo = 1;
String pageNoStr = request.getParameter("pageNo");
//初次进入list.jsp页面,没有pageNo参数值,只有当点击分页链接的时候才能获取到
try{
if(null != pageNoStr && !pageNoStr.equals("")){
pageNo = Integer.parseInt(pageNoStr);
}
} catch(NumberFormatException e){

}
//每页显示条数
int pageSize = 3;
//调用StudentDao查询学生信息获得学生对象集合
StudentService studentService = new StudentServiceImpl();
//总记录数
int totalCount = studentService.getStudentCount();
//总页数
int totalPage = (totalCount % pageSize) > 0 ? (totalCount / pageSize + 1) : (totalCount / pageSize);
//当页码大于总页数时,默认显示最后一页
if(pageNo < 0 || pageNo > totalPage){
pageNo = totalPage;
}
//每页显示的数据
List<Student> students = studentService.queryStudent(pageNo, pageSize);

%>


<tr align="center">
    <td colspan="8">
    <%
    //当用户点击到首页时,把首页和上一页进行隐藏
    if(pageNo != 1){
    %>
    <a href="<%=path %>/pages/list.jsp?pageno=1">首页</a> 
    <a href="<%=path %>/pages/list.jsp?pageNo=<%=pageNo-1%>">上一页</a>
    <%
    }
    %>
    <%
    //当用户点击到最后一页时,把下一页和末页进行隐藏
    if(pageNo != totalPage){
    %>
    <a href="<%=path %>/pages/list.jsp?pageNo=<%=pageNo+1%>">下一页</a> 
    <a href="<%=path %>/pages/list.jsp?pageNo=<%=totalPage%>">末页</a>  
    <%
    }
    %>
    当前页/总页数 总记录数</td>
  </tr>


0 0
原创粉丝点击