1、PageModel.java

  1. package com.javaweb;
  2.  
  3. import java.util.List;
  4.  
  5. public class PageModel<E> {
  6.  
  7. private List<E> list; //结果集
  8. private int totalRecords; //查询记录数
  9. private int pageSize; //每页多少记录
  10. private int pageNo; //当前页
  11.  
  12. //总页数
  13. public int getTotalPages(){
  14. return (totalRecords + pageSize - 1) / pageSize;
  15. }
  16.  
  17. //取得首页
  18. public int getTopPageNo(){
  19. return 1;
  20. }
  21.  
  22. //取得上一页
  23. public int getPreviousPageNo(){
  24. if(pageNo<=1)
  25. return 1;
  26. return pageNo-1;
  27. }
  28.  
  29. // 取得下一页
  30. public int getNextPageNo(){
  31. if(pageNo >= getBottomPageNo())
  32. return getBottomPageNo();
  33. return pageNo+1;
  34. }
  35.  
  36. //取得尾页
  37. public int getBottomPageNo(){
  38. return getTotalPages();
  39. }
  40.  
  41. public List<E> getList() {
  42. return list;
  43. }
  44.  
  45. public void setList(List<E> list) {
  46. this.list = list;
  47. }
  48.  
  49. public int getTotalRecords() {
  50. return totalRecords;
  51. }
  52.  
  53. public void setTotalRecords(int totalRecords) {
  54. this.totalRecords = totalRecords;
  55. }
  56.  
  57. public int getPageSize() {
  58. return pageSize;
  59. }
  60.  
  61. public void setPageSize(int pageSize) {
  62. this.pageSize = pageSize;
  63. }
  64.  
  65. public int getPageNo() {
  66. return pageNo;
  67. }
  68.  
  69. public void setPageNo(int pageNo) {
  70. this.pageNo = pageNo;
  71. }
  72.  
  73. }

2、Book.java

  1. package com.javaweb.book;
  2. public class Book {
  3. private String id;
  4. private String name;
  5. private String title;
  6. private float price;
  7. private int year;
  8. private String description;
  9. private int saleAmount;
  10.  
  11. public String getId() {
  12. return id;
  13. }
  14. public void setId(String id) {
  15. this.id = id;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public String getTitle() {
  24. return title;
  25. }
  26. public void setTitle(String title) {
  27. this.title = title;
  28. }
  29. public float getPrice() {
  30. return price;
  31. }
  32. public void setPrice(float price) {
  33. this.price = price;
  34. }
  35. public int getYear() {
  36. return year;
  37. }
  38. public void setYear(int year) {
  39. this.year = year;
  40. }
  41. public String getDescription() {
  42. return description;
  43. }
  44. public void setDescription(String description) {
  45. this.description = description;
  46. }
  47. public int getSaleAmount() {
  48. return saleAmount;
  49. }
  50. public void setSaleAmount(int saleAmount) {
  51. this.saleAmount = saleAmount;
  52. }
  53. }

3、BookDb.java

  1. package com.javaweb.book;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.*;
  7. import com.javaweb.*;
  8. public class BookDb {
  9.  
  10. // 返回所有book
  11. public List<Book> getAllBooks(){
  12. String sql = "select * from books order by id";
  13. Connection conn = null;
  14. PreparedStatement pstmt = null;
  15. ResultSet rs = null;
  16. List<Book> bookList = null;
  17. try{
  18. conn = DbUtil.getConnection();
  19. pstmt = conn.prepareStatement(sql);
  20. rs = pstmt.executeQuery();
  21. bookList = new ArrayList<Book>();
  22. while(rs.next()){
  23. Book book = new Book();
  24. book.setId(rs.getString("id"));
  25. book.setName(rs.getString("name"));
  26. book.setTitle(rs.getString("title"));
  27. book.setPrice(rs.getFloat("price"));
  28. book.setYear(rs.getInt("yr"));
  29. book.setDescription(rs.getString("description"));
  30. book.setSaleAmount(rs.getInt("sale_amount"));
  31. bookList.add(book);
  32. }
  33. }catch(SQLException e){
  34. e.printStackTrace();
  35. }finally{
  36. DbUtil.close(rs);
  37. DbUtil.close(pstmt);
  38. DbUtil.close(conn);
  39. }
  40. return bookList;
  41. }
  42.  
  43. //返回id查询book
  44. //@param id book的id
  45. public Book getBookById(String id){
  46. String sql = "select * from books where id=?";
  47. Connection conn = null;
  48. PreparedStatement pstmt = null;
  49. ResultSet rs = null;
  50. Book book = null;
  51. try{
  52. conn = DbUtil.getConnection();
  53. pstmt = conn.prepareStatement(sql);
  54. pstmt.setString(1, id);
  55. rs = pstmt.executeQuery();
  56. while(rs.next()){
  57. book = new Book();
  58. book.setId(rs.getString("id"));
  59. book.setName(rs.getString("name"));
  60. book.setTitle(rs.getString("title"));
  61. book.setPrice(rs.getFloat("price"));
  62. book.setYear(rs.getInt("yr"));
  63. book.setDescription(rs.getString("description"));
  64. book.setSaleAmount(rs.getInt("sale_amount"));
  65. }
  66. }catch(SQLException e){
  67. e.printStackTrace();
  68. }finally{
  69. DbUtil.close(rs);
  70. DbUtil.close(pstmt);
  71. DbUtil.close(conn);
  72. }
  73. return book;
  74. }
  75.  
  76. //分页查询(上一页、下一页)
  77. //@param pageNo 第几页
  78. //@param pageSize 每页多少记录
  79. public PageModel<Book> findBookList(int pageNo,int pageSize){
  80. String sql = "select * from books order by id limit ?,?";
  81. Connection conn = null;
  82. PreparedStatement pstmt = null;
  83. ResultSet rs = null;
  84. PageModel<Book> pageModel = null;
  85. try{
  86. conn = DbUtil.getConnection();
  87. pstmt = conn.prepareStatement(sql);
  88. pstmt.setInt(1, (pageNo-1)*pageSize);
  89. pstmt.setInt(2, pageSize);
  90. rs = pstmt.executeQuery();
  91. List<Book> bookList = new ArrayList<Book>();
  92. while(rs.next()){
  93. Book book = new Book();
  94. book.setId(rs.getString("id"));
  95. book.setName(rs.getString("name"));
  96. book.setTitle(rs.getString("title"));
  97. book.setPrice(rs.getFloat("price"));
  98. book.setYear(rs.getInt("yr"));
  99. book.setDescription(rs.getString("description"));
  100. book.setSaleAmount(rs.getInt("sale_amount"));
  101. bookList.add(book);
  102. }
  103. pageModel = new PageModel<Book>();
  104. pageModel.setList(bookList);
  105. pageModel.setPageNo(pageNo);
  106. pageModel.setPageSize(pageSize);
  107. pageModel.setTotalRecords(getTotalRecords(conn));
  108. }catch(SQLException e){
  109. e.printStackTrace();
  110. }finally{
  111. DbUtil.close(rs);
  112. DbUtil.close(pstmt);
  113. DbUtil.close(conn);
  114. }
  115. return pageModel;
  116. }
  117.  
  118. //取得总记录数
  119. private int getTotalRecords(Connection conn)
  120. throws SQLException{
  121. String sql = "select count(*) from books";
  122. PreparedStatement pstmt = null;
  123. ResultSet rs = null;
  124. int count = 0;
  125. try{
  126. pstmt = conn.prepareStatement(sql);
  127. rs = pstmt.executeQuery();
  128. rs.next();
  129. count = rs.getInt(1);
  130. }finally{
  131. DbUtil.close(rs);
  132. DbUtil.close(pstmt);
  133. }
  134. return count;
  135. }
  136. }

4、DbUtil.java

  1. package com.javaweb.book;
  2. import java.sql.*;
  3.  
  4. public class DbUtil {
  5.  
  6. private final static String driver = "com.mysql.jdbc.Driver";
  7. private final static String url = "jdbc:mysql://localhost:3306/bookdb";
  8. private final static String user = "root";
  9. private final static String password = "123456";
  10.  
  11. public static Connection getConnection(){
  12. try{
  13. Class.forName(driver);
  14. Connection conn = DriverManager.getConnection(url,user,password);
  15. return conn;
  16. }catch(ClassNotFoundException e){
  17. System.out.println("找不到数据库驱动");
  18. System.out.println(e.getMessage());
  19. }catch(SQLException e){
  20. System.out.println("数据库连接失败");
  21. System.out.println(e.getMessage());
  22. }
  23. return null;
  24. }
  25.  
  26. public static void close(Connection conn){
  27. if(conn!=null){
  28. try{
  29. conn.close();
  30. }catch(SQLException e){
  31. System.out.println("关闭数据库连接出错");
  32. System.out.println(e.getMessage());
  33. }
  34. }
  35. }
  36.  
  37. public static void close(ResultSet rs){
  38. if(rs!=null){
  39. try{
  40. rs.close();
  41. }catch(SQLException e){
  42. e.printStackTrace();
  43. }
  44. }
  45. }
  46.  
  47. public static void close(PreparedStatement pstmt){
  48. if(pstmt!=null){
  49. try{
  50. pstmt.close();
  51. }catch(SQLException e){
  52. e.printStackTrace();
  53. }
  54. }
  55. }
  56. }

5、bookstore.jsp

  1. <%@ page contentType="text/html;charset=GBK" %>
  2. <html>
  3. <head><title>Bookstore</title>
  4.  
  5. </head>
  6. <body>
  7. <center>
  8. <p><b><a href="http://blog.163.com/jesse_zy/blog/<%=request.getContextPath()%>/catalog.jsp">查看所有书目</a></b>
  9. </center>
  10.  
  11. </body>
  12. </html>
  13.  
  14. 6、catalog.jsp
  15.  
  16. <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
  17. <%@ page import="java.util.*" %>
  18. <%@ page import="com.javaweb.*" %>
  19. <%@ page import="com.javaweb.book.*" %>
  20. <%
  21. int pageNo = 1;
  22. int pageSize = 4;
  23. String pageNoString = request.getParameter("pageNo");
  24. if(pageNoString != null){
  25. pageNo = Integer.parseInt(pageNoString);
  26. }
  27. PageModel<Book> pageModel = new BookDb().findBookList(pageNo,pageSize);
  28. %>
  29.  
  30. <html>
  31. <head>
  32. <title>图书详细信息</title>
  33. <link rel="stylesheet" href="http://blog.163.com/jesse_zy/blog/style.css">
  34. </head>
  35.  
  36. <script type="text/javascript">
  37.  
  38. function topPage() {
  39. window.self.location = "catalog.jsp?pageNo=<%=pageModel.getTopPageNo()%>";
  40. }
  41.  
  42. function previousPage() {
  43. window.self.location = "catalog.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>";
  44. }
  45.  
  46. function nextPage() {
  47. window.self.location = "catalog.jsp?pageNo=<%=pageModel.getNextPageNo()%>";
  48. }
  49.  
  50. function bottomPage() {
  51. window.self.location = "catalog.jsp?pageNo=<%=pageModel.getBottomPageNo()%>";
  52. }
  53. </script>
  54.  
  55. <body>
  56. <div align="center">
  57. <form>
  58. <table width="900" height="30" border="0" cellspacing="0">
  59. <tr>
  60. <td>图书列表</td>
  61. <td align="right"><a href="http://blog.163.com/jesse_zy/blog/bookstore.jsp">返回主页</a></td>
  62. </tr>
  63. </table>
  64. <table width="900" border="1" cellspacing="0" cellpadding="0">
  65. <tr>
  66. <th>ID</th>
  67. <th>作者</th>
  68. <th>书名</th>
  69. <th>价格</th>
  70. <th>出版年份</th>
  71. <th>描述</th>
  72. <th>销量</th>
  73. </tr>
  74. <%
  75. List<Book> bookList = pageModel.getList();
  76. for(Book book:bookList){
  77. %>
  78. <tr>
  79. <td><%= book.getId()%></td>
  80. <td><%= book.getName()%></td>
  81. <td><%= book.getTitle()%></td>
  82. <td><%= book.getPrice()%></td>
  83. <td><%= book.getYear()%></td>
  84. <td><%= book.getDescription()%></td>
  85. <td><%= book.getSaleAmount()%></td>
  86. </tr>
  87. <%
  88. }
  89. %>
  90. </table>
  91. <table width="900" height="35" border="0" cellspacing="0">
  92. <tr>
  93. <td>
  94. <div>
  95.  共 <%=pageModel.getTotalPages() %> 页</font>    
  96. 当前第 <font color="red"><%=pageModel.getPageNo() %></font> 页
  97. </div>
  98. </td>
  99. <td>
  100. <div align="right">
  101. <input type="button" value="首页" onClick="topPage()"
  102. <% if(pageNo<=1) {
  103. %>disabled="disabled"
  104. <% }%>>
  105. <input type="button" value="上一页" onClick="previousPage()"
  106. <% if(pageNo<=1) {
  107. %>disabled="disabled"
  108. <% }%>>
  109. <input type="button" value="下一页" onClick="nextPage()"
  110. <% if(pageNo>=pageModel.getBottomPageNo()) {
  111. %>disabled="disabled"
  112. <% }%>>
  113. <input type="button" value="尾页" onClick="bottomPage()"
  114. <% if(pageNo>=pageModel.getBottomPageNo()) {
  115. %>disabled="disabled"
  116. <% }%>> 
  117. </div>
  118. </td>
  119. <tr>
  120. </table>
  121. </form>
  122. </div>
  123. </body>
  124. </html>

7、style.css

  1. th{
  2. font-family : 宋体;
  3. font-size : 12pt;
  4. }
  5. td{
  6. font-family : 宋体;
  7. font-size : 11pt;
  8. }

8、books.sql

  1. drop database BookDB;
  2. create database BookDB;
  3. use BookDB;
  4.  
  5. create table BOOKS(
  6. ID varchar(8) primary key,
  7. NAME varchar(24),
  8. TITLE varchar(96),
  9. PRICE float,
  10. YR int,
  11. DESCRIPTION varchar(128),
  12. SALE_AMOUNT int);
  13.  
  14. insert into BOOKS values('001','李建',
  15. 'Java面向对象编程',65,
  16. 2006, '让读者由浅入深掌握Java语言', 20000);
  17.  
  18. insert into BOOKS values('001','李建',
  19. 'Java面向对象编程',65,
  20. 2006, '让读者由浅入深掌握Java语言', 20000);
  21.  
  22. insert into BOOKS values('002', '李建',
  23. '精通Struts', 49,
  24. 2004, '真的很棒', 80000);
  25.  
  26. insert into BOOKS values('003', '李建',
  27. 'Tomcat与JavaWeb开发技术详解',
  28. 45, 2004, '关于Tomcat与JavaWeb开发的技术书', 40000);
  29.  
  30. insert into BOOKS values('004', '李建',
  31. 'Java网络编程精解',
  32. 55, 2007, '很值得一看', 20000);
  33.  
  34. insert into BOOKS values('005', '李建',
  35. '精通Hibernate',
  36. 59, 2005, '权威的Hibernate技术资料', 50000);
  37.  
  38. insert into BOOKS values('006', '李建',
  39.  
  40. 'Java2认证考试指南与试题解析',
  41. 88, 2002, '权威的Java技术资料', 8000);

Java-分页实例的更多相关文章

  1. java分页实例Demo

    前两天测试过的一个分页的demo,在网上看到的,挺好的,就写了下来. 分页也是web里面必须的,有使用的价值. demo文件打包上传了,链接:http://pan.baidu.com/s/1o6sME ...

  2. java:(json,ajax,path,Oracle的分页实例,Filter拦截器)

    1.json: <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...

  3. Struts+jdbc+分页 实例

    根据项目里分页实例,带有注解. package org.tarena.netctoss.dao.impl; import java.sql.Connection; import java.sql.Pr ...

  4. JAVA RMI 实例

    下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用. 分为以下四个步骤 1. 创建远程接口及声明远程方法(HelloInterface.java)2. 实现远程接口及远程方法(继承Unicas ...

  5. RDIFramework.NET 中多表关联查询分页实例

    RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...

  6. php分页实例附代码

    一个典型的PHP分页实例代码分享,学习php的朋友肯定用得到,主要是了解思路: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

  7. Jsp分页实例---真分页

    网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...

  8. Java多线程-实例解析

    Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法.Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯 ...

  9. 数据你把它的金额-JAVA分页

    数据量你造吗-JAVA分页 原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...

  10. 浅谈Java分页技术

    话不多言.我们要实现java分页技术,我们首先就需要定义四个变量,他们是: int  pageSize;//每页显示多少条记录 int pageNow;//希望现实第几页 int pageCount; ...

随机推荐

  1. ld: symbol dyld_stub_binding_helper not found, normally in crt1.o/dylib1.o/bundle1.o for architecture i386

    就是选择的运行版本太低了,点击项目,project,把iOS DeployMent Target改为比较高的版本就行

  2. 关于sql语句in的使用注意规则( 转)

    select * from tuser where userno not in(select userno from filter_barcode) 上面这条语句子查询里,userno 并不存在fil ...

  3. css的定位机制

    牛腩新闻发不系统中遇到了CSS(Cascading style sheets),第一次接触,比较陌生还!因为CSS很多关于元素定位的问题,并且很多情况下元素的位置以像素精度计.一个不小心就很头疼,为此 ...

  4. Java开发手册

    <Java开发手册> 基本信息 作者: 桂颖    谷涛    出版社:电子工业出版社 ISBN:9787121209161 上架时间:2013-8-12 出版日期:2013 年7月 开本 ...

  5. python手记(30)

    #!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test3.png" ...

  6. xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案)

    今天在eclipse中编写pom.xml文件时,注释中的中文被eclipse识别到错误:Invalid byte 1 of 1-byte UTF-8 sequence,曾多次遇到该问题,问题的根源是: ...

  7. 【转】VC的MFC中重绘函数的使用总结(整理)

    原文网址:http://www.cnblogs.com/x8023z/archive/2008/12/09/mfc33.html 在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘Inva ...

  8. 【转】Android Building System 总结 - 一醉千年 - CSDN博客

    原文网址:http://www.360doc.com/content/15/0314/23/1709014_455175716.shtml  Android Building System 总结 收藏 ...

  9. Git error: hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused b

    hint: Updates were rejected because the remote contains work that you dohint: not have locally. This ...

  10. vijosP1059 积木城堡

    vijosP1059 积木城堡 链接:https://vijos.org/p/1059 [思路] 01背包. 刚开始想麻烦了,想的是二分答案然后01背包判断是否可行,但是首先答案不满足单调性所以不能二 ...