有三种方法:
1 每次取查询结果的所有数据然后根据页码显示指定的纪录
这样的优点是:时间复杂会小,只访问一次数据库就可以了。不用频瀿访问。
缺点是:空间复杂度增加,数据多时。如果有上万条数据就会造成系统资源匮乏,从而死机,速度减慢。
2 根据页面只取一页数据,然后显示这一页,这里要构造sql语句。
优点是 空间复杂度小,占内存少。
缺点是 访问数据库太频瀿了。时间复杂度大。
3 取一定页数的数据。就是前面两种的折中。
优点是 空间复杂度相对1种小,占内存少。
缺点是 时间复杂会小,只访问一次数据库就可以了。不用频瀿访问。
方法如下。
1先建一个处理页面改变的servlet 类。。为StudentServlet.代码如下:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.page.dao.StudentDAO;
import com.page.sys.PageRoll;
import com.page.vo.Student;
public class StudentServlet extends HttpServlet {
public StudentServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PageRoll pageRoll = new PageRoll();
String currPage = request.getParameter("currPage");
if(currPage!=null){
pageRoll.setCurrPage(Integer.valueOf(currPage));
}
StudentDAO studentDAO = new StudentDAO();
List<Student> students = studentDAO.find(pageRoll);
request.setAttribute("students", students);
request.setAttribute("PageRoll", pageRoll);
request.getRequestDispatcher("/view.jsp").forward(request,response);
}
}
2 再建一个类用来存放切放时的参数 代码如下。
public class PageRoll {
//当前页
private Integer currPage = 1;
//总页数
private Integer countPage;
//每页记录数
private Integer pageSize = 5;
//总记录数
private Integer countSize;
public Integer getCurrPage() {
return currPage;
}
public void setCurrPage(Integer currPage) {
this.currPage = currPage;
}
public Integer getCountPage() {
if(countSize!=0){
if(countSize%pageSize!=0){
countPage = countSize/pageSize +1;
}else{
countPage = countSize/pageSize;
}
}
return countPage; }
public void setCountPage(Integer countPage) {
this.countPage = countPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getCountSize() {
return countSize;
}
public void setCountSize(Integer countSize) {
this.countSize = countSize;
}
}
3 在递一次进入信息显示页面时它的当前页面就是1.。。当你单击下一页时就给studentServlet 传一个参数。
要注意的是在写dao时 时面的sql语名如下写:"select * from student limit ?, ?"
上面表示分段显示。第一个参数表示查询记录的开台位置。。第二个参数表示:要取多少个。
我时间少。。没有写全啦。。你自己下载看看吧。。。。。是一个做好的作业。。。