servlet jsp实现分页功能代码解析(一)

2025-10-29 16:54:34

1、

模拟实现过程: 

目录结构

servlet jsp实现分页功能代码解析(一)

servlet jsp实现分页功能代码解析(一)

2、 model层,一个数据库对应的model(Blog),还有一个pageBean(BlogPage) 

import java.sql.Date; 

 public class Blog { 

 private int id;

 private int category_id;

 private String title; 

 private String content;

 private Date created_time;  

//getter和setter方法 

 @Override 

 public String toString() {  

return "Blog [id=" + id + ", 

category_id=" + category_id + ", 

title=" + title + ", 

content=" + content    + ", 

created_time=" + created_time + "]"; } }

public class BlogPage {

 private List<Blog> pagerecord;//每页记录 

 private int pageno;//当前页 

 private int pagenostart;//每页开始索引 

 private int pagesize=5;//每页多少数据 

  private int totalrecord;//总记录数 

 private int totalpage;//总页数 

 public BlogPage(int pageno,int totalrecord){  

//pageno totalrecord都可以当做已有信息  

this.totalrecord=totalrecord; 

  //计算总页数  

   totalpage=(totalrecord%pagesize==0)?totalrecord/pagesize:totalrecord/pagesize+1;  

//pageno的边界处理 

  if(pageno<=1)   this.pageno=1; 

  else if(pageno>=totalpage)   this.pageno=totalpage;  

  else   this.pageno=pageno;  

//计算每页开始索引,即每页第一个数据的索引,用于分页查询  

 pagenostart=(this.pageno-1)*pagesize; 

 }

 public int getPagenostart() { 

  return pagenostart; 

 } 

 public void setPagenostart(int pagenostart) { 

 this.pagenostart = pagenostart; 

 } 

 public List<Blog> getPagerecord() { 

  return pagerecord; 

 } 

 public void setPagerecord(List<Blog> pagerecord) {  

this.pagerecord = pagerecord;

 public int getPageno() { 

  return pageno; 

  }

 public void setPageno(int pageno) { 

   this.pageno = pageno; 

   } 

 public int getPagesize() { 

  return pagesize; 

 }

  public void setPagesize(int pagesize) { 

  this.pagesize = pagesize; 

 } 

 public int getTotalrecord() {  

    return totalrecord;

  }

public void setTotalrecord(int totalrecord) {  

  this.totalrecord = totalrecord; 

  } 

 public int getTotalpage() {  

   return totalpage; } 

 public void setTotalpage(int totalpage) {  

  this.totalpage = totalpage; }}

3、dao层

JDBCUtil封装了jdbc的连接和释放操作

public class JDBCUtil {

 private static String url = "jdbc:mysql://localhost:3306/blogs_stu"; 

 private static String username = "root"; 

 private static String password = ""; 

 static {  

   try {   

     Class.forName("com.mysql.jdbc.Driver");  

   } catch (Exception e) {  

      e.printStackTrace();  

    } } 

 public static Connection getConnection(){  

  Connection conn;  try {   

  conn= DriverManager.getConnection(url, username, password);   

  return conn;  

    } catch (SQLException e) {  

    e.printStackTrace();  }  

   return null; } 

public static void release(ResultSet rs,PreparedStatement ps,Connection conn){ 

  

   if(rs!=null){  

     try {    

          rs.close();   }

    catch (SQLException e) {    

          e.printStackTrace();   }  }  

    if(ps!=null){   

       try {    ps.close();   }

      catch (SQLException e) {   

           e.printStackTrace();   }  } 

     if(conn!=null){   

     try {    conn.close();   } 

     catch (SQLException e) {    e.printStackTrace();   }  } }}

4、 public class BlogDao { 

    //每页的记录,传入每页开始索引和每页大小用于分页,即limit的两个参数(mysql分页用limit) 

public List<Blog> getPageRecord(int pagenostart, int pagesize) {  

    Connection conn = JDBCUtil.getConnection();  

     PreparedStatement ps = null;  

      ResultSet rs = null;  String sql = "select * from blog limit ?,?";  

      List<Blog> list = new ArrayList<Blog>();  

      try {   

       ps = conn.prepareStatement(sql); 

      ps.setInt(1, pagenostart);   ps.setInt(2, pagesize);   

       rs = ps.executeQuery();   

    while (rs.next()) {    

         Blog blog = new Blog();    

         blog.setId(rs.getInt("id"));   

        blog.setCategory_id(rs.getInt("category_id"));    

        blog.setTitle(rs.getString("title"));    

       blog.setContent(rs.getString("content"));    

       blog.setCreated_time(rs.getDate("created_time"));    

      list.add(blog);   }     

          return list;  } 

    catch (SQLException e) {   e.printStackTrace();  }

    finally {   JDBCUtil.release(rs, ps, conn);  }  

     return null; }

   //总记录数 

  public int getTotal() {  

   Connection conn = JDBCUtil.getConnection();   

   PreparedStatement ps = null;  ResultSet rs = null;  

  try {   

    ps = conn.prepareStatement("select count(*) from blog");   

    rs = ps.executeQuery();  

  

   if (rs.next()) {    return rs.getInt(1);   }  } 

   catch (SQLException e) {   e.printStackTrace();  } 

    finally {   JDBCUtil.release(rs, ps, conn);  }  return 0; }}

5、service层 

public class BlogService {

  BlogDao blogDao = new BlogDao(); 

  //返回pagebean,所有分页需要的信息都去pagebean里查找

 public BlogPage findPageRecord(int pageno) {  

   int totalrecord = blogDao.getTotal();  

   BlogPage blogpage = new BlogPage(pageno, totalrecord);  

   List<Blog> list = blogDao.getPageRecord(blogpage.getPagenostart(),blogpage.getPagesize());  blogpage.setPagerecord(list);  return blogpage; } }

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢