先写一个 page类 代码大致如下:
public class Page {
private static int pageSize=5;
private static int pageNow = 0;
private static int pageCount = 0;
private static int rowCount = 0;
public static int getPageSize() {
return pageSize;
}
public static void setPageSize(int pageSize) {
Page.pageSize = pageSize;
}
public static int getPageNow() {
return pageNow;
}
public static void setPageNow(int pageNow) {
Page.pageNow = pageNow;
}
public static int getPageCount() {
return pageCount;
}
public static void setPageCount(int pageCount) {
Page.pageCount = pageCount;
}
public static int getRowCount() {
return rowCount;
}
public static void setRowCount(int rowCount) {
Page.rowCount = rowCount;
}
}
然后在写一个控制器即,写一个方法实现对数据的的分页操作;
import java.sql.*;
import java.util.ArrayList;
import com.mxf.dao.SQLUtil;
import com.mxf.pageing.Page;
import com.mxf.bean.*;
public class StudentService {
//分页
public ArrayList<Student> getUsersByPage(int pageNow,int pageSize)
{
ArrayList<Student> arrayList = new ArrayList<Student>();
String sql = " SELECT * FROM student ORDER BY id LIMIT "+(pageNow-1)*pageSize+","+pageSize+"";
ResultSet rs=SQLUtil.executeQuery(sql, null);
try {
while(rs.next())
{
Student student = new Student();
student.setId(rs.getInt("id"));
student.setAddress(rs.getString("address"));
student.setAge(rs.getInt("age"));
student.setGrades(rs.getString("grades"));
student.setResult(rs.getInt("result"));
student.setSex(rs.getString("sex"));
student.setStudentname(rs.getString("studentname"));
arrayList.add(student);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
}
return arrayList;
}
//得到 PageCount
public int getPageCount(int pageSize)
{
int rowCount = 0;
String sql = "select count(*) from student";
ResultSet rs = SQLUtil.executeQuery(sql, null);
try {
rs.next();
rowCount= rs.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
}finally{
SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
}
return (rowCount-1)/pageSize + 1;
}
public Student getStudentById(String id)
{
Student student = new Student();
String sql = "select * from student where id=?";
String []parameters = {id};
ResultSet rs = SQLUtil.executeQuery(sql, parameters);
try {
while(rs.next())
{
student.setId(rs.getInt("id"));
student.setAddress(rs.getString("address"));
student.setAge(rs.getInt("age"));
student.setGrades(rs.getString("grades"));
student.setResult(rs.getInt("result"));
student.setSex(rs.getString("sex"));
student.setStudentname(rs.getString("studentname"));
}
} catch (Exception e) {
// TODO: handle exception
e.getStackTrace();
}
return student;
}
public boolean updateStudentById(Student student)
{
boolean flage = false;
String sql ="update student set studentname=?,sex=?,age=?,result=?,address=?,grades=? where id=?";
String []parameters = {student.getStudentname(),student.getSex(),student.getAge()+"",student.getResult()+"",student.getAddress(),student.getGrades(),student.getId()+""};
if(SQLUtil.executeUpdate2(sql, parameters))
{
flage = true;
}
return flage;
}
public boolean delStudentById(String id)
{
boolean flage = false;
String sql ="delete from student where id=?";
String []parameters ={id};
if(SQLUtil.executeUpdate2(sql, parameters))
{
flage=true;
}
return flage;
}
public Student selectStudentById(String id)
{
String sql = "select * from student where id=?";
String []parameters ={id};
ResultSet rs = SQLUtil.executeQuery(sql, parameters);
Student student = new Student();
try {
while(rs.next())
{
student.setAddress(rs.getString("address"));
student.setAge(rs.getInt("age"));
student.setGrades(rs.getString("grades"));
student.setId(rs.getInt("id"));
student.setResult(rs.getInt("result"));
student.setSex(rs.getString("sex"));
student.setStudentname(rs.getString("studentname"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return student;
}
public boolean addStudent(Student stu)
{
boolean flage = false;
String sql = "insert into student values (0,?,?,?,?,?,?)";
String []parameters ={stu.getStudentname(),stu.getSex(),stu.getAge()+"",stu.getResult()+"",stu.getAddress(),stu.getGrades()};
if(SQLUtil.executeUpdate2(sql, parameters))
{
flage=true;
}
return flage;
}
}
接下来就是在jsp页面显示了
<%@ page language="java" import="java.util.*,com.mxf.bean.*,
com.mxf.service.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'ShowInfo.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
int pageNow = 1; //表示第几页
int pageSize = 5; //表示每页显示几行
int pageCount = 0; //表示共有多少页
//接收超链接pageNow数据
String spageNow = request.getParameter("pageNow");
if(null!=spageNow)
{
pageNow = Integer.parseInt(spageNow);
}
pageCount = new StudentService().getPageCount(pageSize);
ArrayList<Student> arrayList = new StudentService().getUsersByPage(pageNow, pageSize);
%>
<table border="1">
<tr><td>id</td><td>姓名</td><td>性别</td><td>年龄</td>
<td>成绩</td><td>地址</td><td>专业班级</td><td>修改信息</td>
<td>删除学生</td></tr>
<%
for(int i=0;i<arrayList.size();i++)
{
Student student = arrayList.get(i);
%>
<tr><td><%=student.getId() %></td><td><%=student.getStudentname() %></td><td><%=student.getSex() %></td><td><%=student.getAge() %></td><td><%=student.getResult() %></td>
<td><%=student.getAddress() %></td><td><%=student.getGrades() %></td><td><a href="/studentManage/ShowInfoCl?type=goupdate&id=<%=student.getId() %>">修改信息</a></td><td><a href="/studentManage/ShowInfoCl?type=del&id=<%=student.getId() %>">删除学生</a></td></tr>
<%
}
%>
</table>
<a href='/studentManage/ShowInfo.jsp?pageNow=<%=pageNow==1?pageNow:(pageNow-1) %>'>上一页</a>
<%
for(int i=1;i<=pageCount;i++)
{
%>
<a href='/studentManage/ShowInfo.jsp?pageNow=<%=i%>'><%=i %></a>
<%
}
%>
<a href='/studentManage/ShowInfo.jsp?pageNow=<%=pageNow==pageCount?pageNow:(pageNow+1) %>'>下一页</a>
<a href="/studentManage/Manage.jsp">返回主界面</a>
</body>
</html>
如此操作就可以实现简单的分页操作;
我在写分页操作的时候,遇到的难题有:
1.在写对数据库操作时候的 语句。这里需要注意的是,要计算出,共有多少条数据,能显示多少页,当前页面。
ArrayList<Student> arrayList = new ArrayList<Student>();
String sql = " SELECT * FROM student ORDER BY id LIMIT "+(pageNow-1)*pageSize+","+pageSize+"";
ResultSet rs=SQLUtil.executeQuery(sql, null);
try {
while(rs.next())
{
Student student = new Student();
student.setId(rs.getInt("id"));
student.setAddress(rs.getString("address"));
student.setAge(rs.getInt("age"));
student.setGrades(rs.getString("grades"));
student.setResult(rs.getInt("result"));
student.setSex(rs.getString("sex"));
student.setStudentname(rs.getString("studentname"));
arrayList.add(student);
}
当每次点击上一页 或者是下一页时候,要将当前页面的值传到操作中,这样才能实现分页。