zoukankan      html  css  js  c++  java
  • Java-分页实例

    1、PageModel.java

    package com.javaweb;
    
    import java.util.List;
    
    
    public class PageModel<E> {
     
     private List<E> list; //结果集
     private int totalRecords; //查询记录数
     private int pageSize; //每页多少记录
     private int pageNo; //当前页
    
    
     //总页数
     public int getTotalPages(){
      return (totalRecords + pageSize - 1) / pageSize;
     }
     
     //取得首页
     public int getTopPageNo(){
      return 1;
     }
     
     //取得上一页
     public int getPreviousPageNo(){
      if(pageNo<=1)
       return 1;
      return pageNo-1;
     }
     
     // 取得下一页
     public int getNextPageNo(){
      if(pageNo >= getBottomPageNo())
       return getBottomPageNo();
      return pageNo+1;
     }
     
     //取得尾页
     public int getBottomPageNo(){
      return getTotalPages();
     }
     
     public List<E> getList() {
      return list;
     }
    
     public void setList(List<E> list) {
      this.list = list;
     }
    
     public int getTotalRecords() {
      return totalRecords;
     }
    
     public void setTotalRecords(int totalRecords) {
      this.totalRecords = totalRecords;
     }
    
     public int getPageSize() {
      return pageSize;
     }
    
     public void setPageSize(int pageSize) {
      this.pageSize = pageSize;
     }
    
     public int getPageNo() {
      return pageNo;
     }
    
     public void setPageNo(int pageNo) {
      this.pageNo = pageNo;
     }
    
    }
    

     2、Book.java

    package com.javaweb.book;
    public class Book {
     private String id;
     private String name;
     private String title;
     private float price;
     private int year;
     private String description;
     private int saleAmount;
     
     public String getId() {
      return id;
     }
     public void setId(String id) {
      this.id = id;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getTitle() {
      return title;
     }
     public void setTitle(String title) {
      this.title = title;
     }
     public float getPrice() {
      return price;
     }
     public void setPrice(float price) {
      this.price = price;
     }
     public int getYear() {
      return year;
     }
     public void setYear(int year) {
      this.year = year;
     }
     public String getDescription() {
      return description;
     }
     public void setDescription(String description) {
      this.description = description;
     }
     public int getSaleAmount() {
      return saleAmount;
     }
     public void setSaleAmount(int saleAmount) {
      this.saleAmount = saleAmount;
     }
    }
    

     3、BookDb.java

    package com.javaweb.book;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.*;
    import com.javaweb.*;
    public class BookDb {
     
     // 返回所有book
     public List<Book> getAllBooks(){
      String sql = "select * from books order by id";
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      List<Book> bookList = null;
      try{
       conn = DbUtil.getConnection();
       pstmt = conn.prepareStatement(sql);
       rs = pstmt.executeQuery();
        bookList = new ArrayList<Book>();
       while(rs.next()){
        Book book = new Book();
        book.setId(rs.getString("id"));
        book.setName(rs.getString("name"));
        book.setTitle(rs.getString("title"));
        book.setPrice(rs.getFloat("price"));
        book.setYear(rs.getInt("yr"));
        book.setDescription(rs.getString("description"));
        book.setSaleAmount(rs.getInt("sale_amount"));
        bookList.add(book);
       }
      }catch(SQLException e){
       e.printStackTrace();
      }finally{
       DbUtil.close(rs);
       DbUtil.close(pstmt);
       DbUtil.close(conn);
      }
      return bookList;
     }
     
     //返回id查询book
     //@param id book的id
     public Book getBookById(String id){
      String sql = "select * from books where id=?";
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      Book book = null;
      try{
       conn = DbUtil.getConnection();
       pstmt = conn.prepareStatement(sql);
       pstmt.setString(1, id);
       rs = pstmt.executeQuery();
       while(rs.next()){
        book = new Book();
        book.setId(rs.getString("id"));
        book.setName(rs.getString("name"));
        book.setTitle(rs.getString("title"));
        book.setPrice(rs.getFloat("price"));
        book.setYear(rs.getInt("yr"));
        book.setDescription(rs.getString("description"));
        book.setSaleAmount(rs.getInt("sale_amount"));
       }
      }catch(SQLException e){
       e.printStackTrace();
      }finally{
       DbUtil.close(rs);
       DbUtil.close(pstmt);
       DbUtil.close(conn);
      }
      return book;
     }
     
     //分页查询(上一页、下一页)
     //@param pageNo 第几页
     //@param pageSize 每页多少记录
     public PageModel<Book> findBookList(int pageNo,int pageSize){
      String sql = "select * from books order by id limit ?,?";
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      PageModel<Book> pageModel = null;
      try{
       conn = DbUtil.getConnection();
       pstmt = conn.prepareStatement(sql);
       pstmt.setInt(1, (pageNo-1)*pageSize);
       pstmt.setInt(2, pageSize);
       rs = pstmt.executeQuery();
       List<Book> bookList = new ArrayList<Book>();
       while(rs.next()){
        Book book = new Book();
        book.setId(rs.getString("id"));
        book.setName(rs.getString("name"));
        book.setTitle(rs.getString("title"));
        book.setPrice(rs.getFloat("price"));
        book.setYear(rs.getInt("yr"));
        book.setDescription(rs.getString("description"));
        book.setSaleAmount(rs.getInt("sale_amount"));
        bookList.add(book);
       }
       pageModel = new PageModel<Book>();
       pageModel.setList(bookList);
       pageModel.setPageNo(pageNo);
       pageModel.setPageSize(pageSize);
       pageModel.setTotalRecords(getTotalRecords(conn));
      }catch(SQLException e){
       e.printStackTrace();
      }finally{
       DbUtil.close(rs);
       DbUtil.close(pstmt);
       DbUtil.close(conn);
      }
      return pageModel;
     } 
     
     //取得总记录数
     private int getTotalRecords(Connection conn)
     throws SQLException{
      String sql = "select count(*) from books";
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      int count = 0;
      try{
       pstmt = conn.prepareStatement(sql);
       rs = pstmt.executeQuery();
       rs.next();
       count = rs.getInt(1);
      }finally{
       DbUtil.close(rs);
       DbUtil.close(pstmt);
      }
      return count;
     }
    }
    

     4、DbUtil.java

    package com.javaweb.book;
    import java.sql.*;
    
    public class DbUtil {
    
     private final static String driver = "com.mysql.jdbc.Driver";
     private final static String url = "jdbc:mysql://localhost:3306/bookdb";
     private final static String user = "root";
     private final static String password = "123456";
     
     public static Connection getConnection(){
      try{
       Class.forName(driver);
       Connection conn = DriverManager.getConnection(url,user,password);
       return conn;
      }catch(ClassNotFoundException e){
       System.out.println("找不到数据库驱动");
       System.out.println(e.getMessage());
      }catch(SQLException e){
       System.out.println("数据库连接失败");
       System.out.println(e.getMessage());
      }
      return null;
     }
     
     public static void close(Connection conn){
      if(conn!=null){
       try{
        conn.close();
       }catch(SQLException e){
        System.out.println("关闭数据库连接出错");
        System.out.println(e.getMessage());
       }
      }
     }
     
     public static void close(ResultSet rs){
      if(rs!=null){
       try{
        rs.close();
       }catch(SQLException e){
        e.printStackTrace();
       }
      }
     }
     
     public static void close(PreparedStatement pstmt){
      if(pstmt!=null){
       try{
        pstmt.close();
       }catch(SQLException e){
        e.printStackTrace();
       }
      }
     }
    }
    

     5、bookstore.jsp

    <%@ page contentType="text/html;charset=GBK" %>
    <html>
    <head><title>Bookstore</title>
    
    </head>
    <body>
    <center>
    <p><b><a href="http://blog.163.com/jesse_zy/blog/<%=request.getContextPath()%>/catalog.jsp">查看所有书目</a></b>
    </center>
    
    </body>
    </html>
    
     
    
     
    
    6、catalog.jsp
    
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ page import="java.util.*" %>
    <%@ page import="com.javaweb.*" %>
    <%@ page import="com.javaweb.book.*" %>
    <%
     int pageNo = 1;
     int pageSize = 4;
     String pageNoString = request.getParameter("pageNo");
     if(pageNoString != null){
      pageNo = Integer.parseInt(pageNoString);
     }
     PageModel<Book> pageModel = new BookDb().findBookList(pageNo,pageSize);
    %>
    
    <html>
      <head>
        <title>图书详细信息</title>
        <link rel="stylesheet" href="http://blog.163.com/jesse_zy/blog/style.css">
      </head>
     
      <script type="text/javascript">
     
        function topPage() {
      window.self.location = "catalog.jsp?pageNo=<%=pageModel.getTopPageNo()%>";
     }
     
     function previousPage() {
      window.self.location = "catalog.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>";
     } 
     
     function nextPage() {
      window.self.location = "catalog.jsp?pageNo=<%=pageModel.getNextPageNo()%>";
     }
     
     function bottomPage() {
      window.self.location = "catalog.jsp?pageNo=<%=pageModel.getBottomPageNo()%>";
     }
      </script>
     
      <body>
      <div align="center">
        <form>
          <table width="900" height="30" border="0" cellspacing="0">
            <tr>
              <td>图书列表</td>
              <td align="right"><a href="http://blog.163.com/jesse_zy/blog/bookstore.jsp">返回主页</a></td>
            </tr>
          </table>
          <table  width="900" border="1" cellspacing="0" cellpadding="0">
            <tr>
              <th>ID</th>
              <th>作者</th>
              <th>书名</th>
              <th>价格</th>
              <th>出版年份</th>
              <th>描述</th>
              <th>销量</th>
            </tr>
            <%
             List<Book> bookList = pageModel.getList();
             for(Book book:bookList){
            %>
            <tr>
              <td><%= book.getId()%></td>
              <td><%= book.getName()%></td>
              <td><%= book.getTitle()%></td>
              <td><%= book.getPrice()%></td>
              <td><%= book.getYear()%></td>
              <td><%= book.getDescription()%></td>
              <td><%= book.getSaleAmount()%></td>
            </tr>
            <%
             }
            %>
          </table>
          <table width="900" height="35" border="0" cellspacing="0">
           <tr>
             <td>
              <div>
         共 <%=pageModel.getTotalPages() %> 页</font>    
        当前第 <font color="red"><%=pageModel.getPageNo() %></font> 页
       </div>
             </td>
             <td>
       <div align="right">
        <input type="button" value="首页" onClick="topPage()"
        <% if(pageNo<=1) {
        %>disabled="disabled"
        <% }%>>
        <input type="button" value="上一页" onClick="previousPage()"
        <% if(pageNo<=1) {
        %>disabled="disabled"
        <% }%>>
        <input type="button" value="下一页" onClick="nextPage()"
        <% if(pageNo>=pageModel.getBottomPageNo()) {
        %>disabled="disabled"
        <% }%>>
        <input type="button" value="尾页" onClick="bottomPage()"
        <% if(pageNo>=pageModel.getBottomPageNo()) {
        %>disabled="disabled"
        <% }%>> 
       </div>
        </td>
           <tr>
          </table>
        </form>
        </div>
      </body>
    </html>
    

     7、style.css

    th{
     font-family : 宋体;
     font-size : 12pt;
    }
    td{
     font-family : 宋体;
     font-size : 11pt;
    }
    

     8、books.sql

    drop database BookDB;
    create database BookDB;
    use BookDB;
    
    create table BOOKS(
    ID varchar(8) primary key,
    NAME varchar(24),
    TITLE varchar(96),
    PRICE float,
    YR int,
    DESCRIPTION varchar(128),
    SALE_AMOUNT int);
    
    insert into BOOKS values('001','李建',
    'Java面向对象编程',65,
    2006, '让读者由浅入深掌握Java语言', 20000);
    
    insert into BOOKS values('001','李建',
    'Java面向对象编程',65,
    2006, '让读者由浅入深掌握Java语言', 20000);
    
    insert into BOOKS values('002', '李建',
     '精通Struts', 49,
     2004, '真的很棒', 80000);
    
    insert into BOOKS values('003', '李建',
     'Tomcat与JavaWeb开发技术详解',
     45, 2004, '关于Tomcat与JavaWeb开发的技术书', 40000);
    
    insert into BOOKS values('004', '李建',
     'Java网络编程精解',
    55, 2007, '很值得一看', 20000);
    
    insert into BOOKS values('005', '李建',
     '精通Hibernate',
     59, 2005, '权威的Hibernate技术资料', 50000);
    
    insert into BOOKS values('006', '李建',
     
    'Java2认证考试指南与试题解析',
     88, 2002, '权威的Java技术资料', 8000);
    
  • 相关阅读:
    [CALayer release]: message sent to deallocated instance 的原因
    Java格式化打印及数字格式化
    Java断言关键字
    Java数值使用下划线
    Java数组复制
    .net你必须知道的事儿 1.5
    .net你必须知道的事儿 1.4
    .net你必须知道的事儿 1.3
    .net你必须知道的事儿 1.2
    .net你必须知道的事儿 1.1
  • 原文地址:https://www.cnblogs.com/sunxun/p/4107800.html
Copyright © 2011-2022 走看看