点击图书管理按钮进入图书管理列表
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div>
<a href="BookServlet?method=getBooksByPage">图书管理</a>
<a href="pages/manager/order_manager.jsp">订单管理</a>
<a href="index.jsp">返回商城</a>
</div>
对于根据页面值发送请求还是第一次进入页面的请求做了判断,判断如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书管理</title>
<%@ include file="/WEB-INF/include/base.jsp" %>
<script type="text/javascript">
$(function(){
$(".dela").click(function(){
// var title = $(this).parents("tr").children().html();
var title = $(this).attr("id");
if(confirm("确定删除【"+title+"】吗?") == false){
return false;
}
});
//实现确定按钮分页查询
$("#sub_page").click(function(){
//取pageNo值
var pageNo = $("#pn_input").val();
//请求BookServlet
location = "BookServlet?method=getBooksByPage&pageNo="+pageNo;
});
});
</script>
</head>
<body>
<div id="header">
<img class="logo_img" alt="" src="static/img/logo.gif" >
<span class="wel_word">图书管理系统</span>
<%@ include file="/WEB-INF/include/header.jsp" %>
</div>
<div id="main">
<table>
<tr>
<td>名称</td>
<td>价格</td>
<td>作者</td>
<td>销量</td>
<td>库存</td>
<td colspan="2">操作</td>
</tr>
<c:forEach items="${requestScope.page.list }" var="book">
<tr>
<td>${book.title }</td>
<td>${book.price }</td>
<td>${book.author }</td>
<td>${book.sales }</td>
<td>${book.stock }</td>
<td><a href="BookServlet?method=getBookById&bookId=${book.id }">修改</a></td>
<td><a class="dela" id="${book.title }" href="BookServlet?method=delBookById&bookId=${book.id }">删除</a></td>
</tr>
</c:forEach>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><a href="pages/manager/book_update.jsp">添加图书</a></td>
</tr>
</table>
<br>
<br>
<div id="page_nav">
<a href="BookServlet?method=getBooksByPage&pageNo=1">首页</a>
<c:if test="${page.pageNo>1 }">
<a href="BookServlet?method=getBooksByPage&pageNo=${page.pageNo-1 }">上一页</a>
</c:if>
<c:if test="${page.pageNo<page.totalPageNo }">
<a href="BookServlet?method=getBooksByPage&pageNo=${page.pageNo+1 }">下一页</a>
</c:if>
<a href="BookServlet?method=getBooksByPage&pageNo=${page.totalPageNo }">末页</a>
共${requestScope.page.pageNo }/${requestScope.page.totalPageNo }页,${requestScope.page.totalRecord}条记录
到第<input value="${requestScope.page.pageNo }" name="pn" id="pn_input"/>页
<input id="sub_page" type="button" value="确定">
</div>
</div>
<div id="bottom">
<span>
尚硅谷书城.Copyright ©2015
</span>
</div>
</body>
</html>
package com.atguigu.bean;
import java.io.Serializable;
import java.util.List;
public class Page<T> implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
// 5/19
private int pageNo; //当前页码 用户
private int totalPageNo; //总页数=总条数/每页显示的个数 计算
private int totalRecord; //总条数 dao,sql:select count(*) from books
public static final int PAGE_SIZE = 4; //每页显示的个数 静态常量
private List<T> list; //当前页的数据集合 dao,sql:SELECT * FROM books LIMIT (pageNo-1)*PAGE_SIZE,PAGE_SIZE
public int getPageNo() {
if(pageNo < 1) {
return 1;
}
if(pageNo > getTotalPageNo()) {
return getTotalPageNo();
}
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
/**
* 计算总页数
* @return
*/
public int getTotalPageNo() {
return totalRecord%PAGE_SIZE==0?totalRecord/PAGE_SIZE:totalRecord/PAGE_SIZE+1;
}
public void setTotalPageNo(int totalPageNo) {
this.totalPageNo = totalPageNo;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
// public static int getPageSize() {
// return PAGE_SIZE;
// }
public Page(int pageNo, int totalPageNo, int totalRecord, List<T> list) {
super();
this.pageNo = pageNo;
this.totalPageNo = totalPageNo;
this.totalRecord = totalRecord;
this.list = list;
}
public Page() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Page [pageNo=" + pageNo + ", totalPageNo=" + totalPageNo + ", totalRecord=" + totalRecord + ", list="
+ list + "]";
}
}
package com.atguigu.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.atguigu.bean.Book;
import com.atguigu.bean.Page;
import com.atguigu.service.BookService;
import com.atguigu.service.impl.BookServiceImpl;
/**
* Servlet implementation class BookServlet
*/
public class BookServlet extends BaseServlet {
private static final long serialVersionUID = 1L;
private BookService bookService = new BookServiceImpl();
/**
* 查询所有book信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
// protected void getAllBooks(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// //取值(不用)
// //调用service中的相应方法
// List<Book> books = bookService.getAllBooks();
// //将books存放到域中
// request.setAttribute("books",books);
// //跳转,book_manager.jsp
// request.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(request, response);
// }
/**
* 分页查询book
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
protected void getBooksByPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//取值
String pageNo = request.getParameter("pageNo");
//调用service
Page<Book> page = bookService.getBookByPage(pageNo);
//将page存放到域中
request.setAttribute("page", page);
//跳转
request.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(request, response);
}
/**
* 添加book信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
protected void delBookById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//取值
String bookId = request.getParameter("bookId");
//调用service
bookService.delBookById(bookId);
//跳转
response.sendRedirect(request.getContextPath()+"/BookServlet?method=getBooksByPage");
}
/**
* 通过id获取book信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
protected void getBookById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//取bookid值
String id = request.getParameter("bookId");
//调用Service
Book book = bookService.getBookById(id);
//将book存放域中
request.setAttribute("book", book);
//跳转,book_update.jsp
request.getRequestDispatcher("/pages/manager/book_update.jsp").forward(request, response);
}
/**
* 添加book信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
// protected void addBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// //取值
// String title = request.getParameter("title");
// String author = request.getParameter("author");
// String price = request.getParameter("price");
// String sales = request.getParameter("sales");
// String stock = request.getParameter("stock");
// //调用service
// bookService.addBook(new Book(null, title, author, Double.parseDouble(price), Integer.parseInt(sales), Integer.parseInt(stock), null));
// //跳转,重新查询,book_manager.jsp
getAllBooks(request, response);
// response.sendRedirect(request.getContextPath()+"/BookServlet?method=getAllBooks");
// }
/**
* 通过id获取book信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
protected void updateBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//取值
String id = request.getParameter("bookId");
String title = request.getParameter("title");
String author = request.getParameter("author");
String price = request.getParameter("price");
String sales = request.getParameter("sales");
String stock = request.getParameter("stock");
//通过判断id值是否为空,执行相应方法
//调用service
if(id == null || "".equals(id)) {
//调用addBook()
bookService.addBook(new Book(null, title, author, Double.parseDouble(price), Integer.parseInt(sales), Integer.parseInt(stock), null));
}else {
//调用updateBook()
bookService.updateBook(new Book(Integer.parseInt(id), title, author, Double.parseDouble(price), Integer.parseInt(sales), Integer.parseInt(stock), null));
}
//跳转
response.sendRedirect(request.getContextPath()+"/BookServlet?method=getBooksByPage");
}
}
package com.atguigu.service.impl;
import java.util.List;
import com.atguigu.bean.Book;
import com.atguigu.bean.Page;
import com.atguigu.dao.BookDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.service.BookService;
public class BookServiceImpl implements BookService {
private BookDao bookDao = new BookDaoImpl();
@Override
public List<Book> getAllBooks() {
return bookDao.getAllBooks();
}
@Override
public void addBook(Book book) {
bookDao.addBook(book);
}
@Override
public void delBookById(String id) {
bookDao.delBookById(id);
}
@Override
public Book getBookById(String id) {
return bookDao.getBookById(id);
}
@Override
public void updateBook(Book book) {
bookDao.updateBook(book);
}
@Override
public Page<Book> getBookByPage(String pageNo) {
Page<Book> page = new Page<Book>();
int pNo = 1;//先设置为1,保证第一次访问页面时有值
try {
//若传入的有具体的值,就按具体的值来pageNo为String类型的Integer.parseInt(PageNo)
//万一不可预知原因PageNo为null,那么程序直接崩掉,防止这个捕获一下
pNo = Integer.parseInt(pageNo);
} catch (NumberFormatException e) {
// e.printStackTrace();
}
page.setPageNo(pNo);
return bookDao.getBooksByPage(page);
}
@Override
public Page<Book> getBookByPageAndPrice(String pageNo, String min, String max) {
Page<Book> page = new Page<Book>();
int pNo = 1;
try {
pNo = Integer.parseInt(pageNo);
} catch (NumberFormatException e) {
// e.printStackTrace();
}
page.setPageNo(pNo);
//处理min,max
double minEnd = 0;
double maxEnd = Double.MAX_VALUE;
try {
minEnd = Double.parseDouble(min);
maxEnd = Double.parseDouble(max);
//交换值
double temp=0;
if(minEnd > maxEnd) {
temp = minEnd;
minEnd = maxEnd;
maxEnd = temp;
}
} catch (NumberFormatException e) {
// e.printStackTrace();
}
return bookDao.getBooksByPageAndPrice(page, minEnd, maxEnd);
}
}
package com.atguigu.dao.impl;
import java.util.List;
import com.atguigu.bean.Book;
import com.atguigu.bean.Page;
import com.atguigu.dao.BaseDao;
import com.atguigu.dao.BookDao;
public class BookDaoImpl extends BaseDao<Book> implements BookDao {
@Override
public List<Book> getAllBooks() {
String sql = "SELECT id,title,author,price,sales,stock,img_path FROM books";
return this.getBeanList(sql);
}
@Override
public void addBook(Book book) {
String sql = "insert into books(title,author,price,sales,stock,img_path) values(?,?,?,?,?,?)";
this.update(sql, book.getTitle(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgPath());
}
@Override
public void delBookById(String id) {
String sql = "delete from books where id = ?";
this.update(sql, id);
}
@Override
public Book getBookById(String id) {
String sql = "SELECT id,title,author,price,sales,stock,img_path FROM books WHERE id = ?";
return this.getBean(sql, id);
}
@Override
public void updateBook(Book book) {
String sql = "update books set title=?,author=?,price=?,sales=?,stock=? where id=?";
this.update(sql, book.getTitle(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getId());
}
@Override
public void updateBook(int stock, int sales, int id) {
String sql = "update books set sales=?,stock=? where id=?";
this.update(sql,sales,stock,id);
}
@Override
public void updateBook(Object[][] params) {
String sql = "update books set sales=?,stock=? where id=?";
this.batchUpdate(sql,params);
}
@Override
public Page<Book> getBooksByPage(Page<Book> page) {
//page:pageNo PAGE_SIZE totalPageNo
//dao:totalRecord
String sql = "select count(*) from books";
//long(int) Integer.parse 强转是为了防止报错,this.getSingeValue(sql)返回值为long
//long怎么转为Integer呢?先+""然后再进行转换
int count = Integer.parseInt(this.getSingeValue(sql)+"");
//将totalRecord赋值
page.setTotalRecord(count);//数据总条数
// System.out.println("record:"+page.getTotalRecord());
// System.out.println("pageNo:"+page.getTotalPageNo());
//dao:list
String sql2 = "SELECT id,title,author,price,sales,stock,img_path "
+ "FROM books "
+ "WHERE 1=1 "
+ "LIMIT ?,?";
//pageNo页从(page.getPageNo()-1)*Page开始为第一条数据,Page.PAGE_SIZE为一页展示多少条数据
List<Book> list = this.getBeanList(sql2, (page.getPageNo()-1)*Page.PAGE_SIZE,Page.PAGE_SIZE);
//将list存放到page中
page.setList(list);
return page;
}
@Override
public Page<Book> getBooksByPageAndPrice(Page<Book> page,double min,double max) {
String sql = "SELECT count(*) "
+ "FROM books "
+ "WHERE 1=1 "
+ "AND price BETWEEN ? AND ?";
int count = Integer.parseInt(this.getSingeValue(sql, min,max)+""); //long(int) Integer.parse
//将totalRecord赋值
page.setTotalRecord(count);
//dao:list
String sql2 = "SELECT id,title,author,price,sales,stock,img_path "
+ "FROM books "
+ "WHERE 1=1 "
+ "AND price BETWEEN ? AND ? "
+ "LIMIT ?,?";
List<Book> list = this.getBeanList(sql2, min,max,(page.getPageNo()-1)*Page.PAGE_SIZE,Page.PAGE_SIZE);
//将list存放到page中
page.setList(list);
return page;
}
}