页面展示
思路分析
分页工具类
public class PageBean<T> {
private Integer pageNo = 1;
private Integer pageSize = 4;
private Integer totalPage;
private Integer rows;
private List<T> lists;
public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
if (pageNo<1){
this.pageNo=1;
}else if(pageNo>totalPage){
this.pageNo = totalPage;
}else{
this.pageNo = pageNo;
}
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalPage() {
return totalPage;
}
public Integer getRows() {
return rows;
}
public void setRows(Integer rows) {
this.rows = rows;
this.totalPage= this.rows%pageSize==0?this.rows/pageSize:this.rows/pageSize+1;
}
public List<T> getLists() {
return lists;
}
public void setLists(List<T> lists) {
this.lists = lists;
}
}
dao层与dao实现类层
public interface BookInfoDao {
int queryCount(String type,String name,String is_borrow);
List<BookInfo> queryAllBook(String type,String name,String is_borrow,int start,int end);
}
public class BookInfoDaoImpl implements BookInfoDao {
QueryRunner queryRunner = C3P0Util.getQueryRunner();
@Override
public int queryCount(String type, String name, String is_borrow) {
StringBuffer sb = new StringBuffer();
List<String> params = new ArrayList<>();
String sql = " SELECT count(*) from book_info where 1=1";
sb.append(sql);
if (type!=null&!"0".equals(type)){
sb.append(" and book_type = ?");
params.add(type);
}
if (name!=null&!"".equals(name)){
sb.append(" and book_name LIKE ?");
params.add("%"+name+"%");
}
if (is_borrow!=null&!"-1".equals(is_borrow)){
sb.append(" and is_borrow = ?");
params.add(is_borrow);
}
Long count=0L;
try {
count = (Long)queryRunner.query(sb.toString(),new ScalarHandler(1),params.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return count.intValue();
}
@Override
public List<BookInfo> queryAllBook(String type, String name, String is_borrow, int start, int end) {
StringBuffer sb = new StringBuffer();
List params = new ArrayList<>();
String sql = "select * from book_info INNER JOIN book_type ON book_info.book_type = book_type.id where 1=1 ";
sb.append(sql);
if (type!=null&!"0".equals(type)){
sb.append(" and book_type = ?");
params.add(type);
}
if (name!=null&!"".equals(name)){
sb.append(" and book_name LIKE ?");
params.add("%"+name+"%");
}
if (is_borrow!=null&!"-1".equals(is_borrow)){
sb.append(" and is_borrow = ?");
params.add(is_borrow);
}
sb.append(" limit ?,?");
params.add(start);
params.add(end);
List<BookInfo> bookInfos = null;
try {
bookInfos = queryRunner.query(sb.toString(),new BeanListHandler<BookInfo>(BookInfo.class),params.toArray());
} catch (SQLException e) {
e.printStackTrace();
}
return bookInfos;
}
}
service层与service实现层
public interface BookInfoService {
int queryCount(String type, String name, String is_borrow);
List<BookInfo> queryAllBook(String type, String name, String is_borrow,int start,int end);
}
public class BookInfoServiceImpl implements BookInfoService {
BookInfoDao dao = new BookInfoDaoImpl();
@Override
public int queryCount(String type, String name, String is_borrow) {
return dao.queryCount(type,name,is_borrow);
}
@Override
public List<BookInfo> queryAllBook(String type, String name, String is_borrow, int start, int end) {
return dao.queryAllBook(type,name,is_borrow,start,end);
}
}
servlet控制层
@WebServlet(name = "BookServlet" )
public class BookServlet extends HttpServlet {
BookInfoService bookInfoService = new BookInfoServiceImpl();
BookTypeService bookTypeService = new BookTypeServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String choose = request.getParameter("choose");
switch (choose){
case "3":
queryLikeBook(request,response);
break;
}
}
protected void queryLikeBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String type = request.getParameter("type");
String name = request.getParameter("name");
String is_borrow = request.getParameter("is_borrow");
String now = request.getParameter("now");
PageBean<BookInfo> pageBean = new PageBean<>();
int count = bookInfoService.queryCount(type, name, is_borrow);
pageBean.setRows(count);
if (now!=null){
pageBean.setPageNo(Integer.valueOf(now));
}
int first = (pageBean.getPageNo()-1)*pageBean.getPageSize();
int end = pageBean.getPageSize();
List<BookInfo> bookInfos = bookInfoService.queryAllBook(type, name, is_borrow,first,end);
pageBean.setLists(bookInfos);
List<BookType> bookTypes = bookTypeService.queryAllBookType();
HttpSession session = request.getSession();
session.setAttribute("bookTypes",bookTypes);
session.setAttribute("pageBean",pageBean);
session.setAttribute("type",type);
session.setAttribute("name",name);
session.setAttribute("is_borrow",is_borrow);
response.sendRedirect("/jsp/book.jsp");
}
}
前端页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>图书借阅系统</title>
<link rel="stylesheet" href="../css/book.css">
</head>
<body>
<div class="bigDiv">
<div class="headDiv">
<form action="/BookServlet" method="get">
<h2>图书借阅系统</h2>
<table class="oneTable">
<tr>
<td>
<input value="3" name="choose" hidden>
<input id="now" name="now" hidden value="1">
图书分类:
<select name="type">
<option value="0" >全部</option>
<c:forEach items="${bookTypes}" var="bookType">
<option value="${bookType.id}" <c:if test="${bookType.id==type}">selected</c:if>>${bookType.type_name}</option>
</c:forEach>
</select>
图书名称:<input type="text" name="name" value="${name}">
是否借阅:
<select name="is_borrow">
<option value="-1">请选择</option>
<option value="0" <c:if test="${is_borrow==0}">selected</c:if>>未借阅</option>
<option value="1" <c:if test="${is_borrow==1}">selected</c:if>>已借阅</option>
</select>
<%--<input name="choose" hidden value="1">--%>
<input type="submit" value="查询">
</td>
</tr>
</table>
<a href="../jsp/addBook.jsp">添加</a>
</form>
</div>
<div class="bodyDiv">
<table>
<thead>
<button id="deleteAll" onclick="deleteAll();">批量删除</button>
<tr>
<td>图书编号</td>
<td>图书分类</td>
<td>图书名称</td>
<td>作者</td>
<td>出版社</td>
<td>操作</td>
<td>详情</td>
<td>删除</td>
<td>修改</td>
<td><input type="checkbox" onclick="delAll(this)"></td>
</tr>
</thead>
<tbody>
<form action="/BookServlet" id="form1">
<input type="text" value="7" name="choose" hidden>
<c:forEach items="${pageBean.lists}" var="bookInfo">
<tr>
<td>${bookInfo.book_code}</td>
<td>${bookInfo.type_name}</td>
<td>${bookInfo.book_name}</td>
<td>${bookInfo.book_author}</td>
<td>${bookInfo.publish_press}</td>
<td>
<c:if test="${bookInfo.is_borrow==0}"><a href="#">未借阅</a></c:if>
<c:if test="${bookInfo.is_borrow==1}"><a href="#">已借阅</a></c:if>
</td>
<td><a href="/BookServlet?id=${bookInfo.book_id}&choose=4">详情 </a></td>
<td><a href="/BookServlet?id=${bookInfo.book_id}&choose=5">删除</a></td>
<td><a href="/BookServlet?id=${bookInfo.book_id}&choose=6">修改</a></td>
<td><input type="checkbox" name="id" value="${bookInfo.book_id}"></td>
</tr>
</c:forEach>
</form>
</tbody>
<tfoot id="tfootID">
<tr>
<td colspan="10">
<a href="javascript:doPage(1);">首页</a>
<a href="javascript:doPage(${pageBean.pageNo-1});">上一页</a>
<a href="javascript:doPage(${pageBean.pageNo+1});">下一页</a>
<a href="javascript:doPage(${pageBean.totalPage});">末页</a>
${pageBean.pageNo}/${pageBean.totalPage}
<input type="text" id="pageNum">
<button onclick="doPage($('#pageNum').val())">go</button>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</body>
<script type="text/javascript" src="../js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
function doPage(num) {
$("#now").val(num);
$(".headDiv form").submit();
}
function delAll(b) {
$("input[name='box']").attr("checked",b.checked);
}
function deleteAll() {
$("#form1").submit();
}
</script>
</html>