web 开发 mysql+jdbc 实现信息分页显示

有三种方法:

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 ?, ?"

 

上面表示分段显示。第一个参数表示查询记录的开台位置。。第二个参数表示:要取多少个。

 

 

我时间少。。没有写全啦。。你自己下载看看吧。。。。。是一个做好的作业。。。

你可能感兴趣的:(DAO,mysql,Web,jdbc,servlet)