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);

最新文章

  1. MySQL追踪优化器小试
  2. php优化
  3. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 174人阅读 评论(0) 收藏
  4. Simplest way to serve static data from outside the application server in a Java web application
  5. 3d sphere opengl
  6. 使用Drush管理Drupal站点
  7. Strut2 采用token机制防御CSRF同时也可以防止表单重复提交
  8. Ubuntu安装google chrome过程
  9. Android Studio代码着色插件
  10. 杭电oj1062 Text Reverse
  11. 1014 Uniform Generator
  12. spring cloud+dotnet core搭建微服务架构:配置中心续(五)
  13. Hibernate的CRUD以及junit测试
  14. Github上Laravel开源排行榜Star数61-90名
  15. How to use Junit Listener
  16. 设计模式总结(转自CS-Notes)
  17. Uni2D 入门 -- Asset Table
  18. 企业官网原型制作分享-Starbucks
  19. Javascript如何避免连续调用中取到不存在的属性而导致报TypeError错?
  20. Python:三元运算

热门文章

  1. Ubuntu版本介绍
  2. 玩SSH,SFTP
  3. C++必备知识
  4. Spring MVC 解读——@RequestMapping (2)(转)
  5. Delphi直接让QT进入指定房间
  6. 查看TEMP使用情况
  7. 许令波老师的java的IO机制分析文章
  8. 导入 from pdfminer.pdfinterp import process_pdf 错误
  9. Hibernate(九)一对多双向关联映射
  10. C# Excel操作类