书城项目第五阶段:图书分页

本文详细介绍了在Java Web项目中实现图书分页的过程,从分页模型Page的设计,到首页、上一页、下一页、末页功能的实现,再到分页条的抽取和首页价格搜索功能的添加。内容包括分页模块的各个子任务,如跳转到指定页数、显示连续页码等,并涉及到Servlet、JSP和后台数据处理的相关代码修改。
摘要由CSDN通过智能技术生成

5.1分页模块分析

在这里插入图片描述

5.1.1分页模型 Page 的抽取(当前页数,总页数,总记录数,当前页数据,每页记录数)

1.	import java.util.List;  
2.	  
3.	/** 
4.	 * Page 是分页的模型对象 
5.	 * 
6.	 * @param <T> 是具体的模块的 javaBean 类 
7.	 */  
8.	public class Page<T> {
     
9.	    public static final Integer PAGE_SIZE = 4;  
10.	    // 当前页码  
11.	    private Integer pageNo;  
12.	    // 总页码  
13.	    private Integer pageTotal;  
14.	    // 当前页显示数量  
15.	    private Integer pageSize = PAGE_SIZE;  
16.	    // 总记录数  
17.	    private Integer pageTotalCount;  
18.	    // 当前页数据  
19.	    private List<T> items;  20.	}  

5.1.2分页的初步实现

BookDao代码:

1.	@Override  
2.	public Integer queryForPageTotalCount(){
     
3.	        String sql="select count(*) from t_book";  
4.	        Number count=(Number)queryForSingleValue(sql);  
5.	        return count.intValue();  
6.	}  
7.	          
8.	@Override  
9.	public List<Book> queryForPageItems(int begin,int pageSize){
     
10.	        String sql="select `id` , `name` , `author` , `price` , `sales` , `stock` , `img_path` imgPath  
11.	        from t_book limit?,?";  
12.	        return queryForList(Book.class,sql,begin,pageSize);
13.	}

BookService代码:

14.	@Override  
15.	public Page<Book> page(int pageNo,int pageSize){
     
16.	        Page<Book> page=new Page<Book>();  
17.	        // 设置当前页码  
18.	        page.setPageNo(pageNo);  
19.	        // 设置每页显示的数量  
20.	        page.setPageSize(pageSize);  
21.	        // 求总记录数  
22.	        Integer pageTotalCount=bookDao.queryForPageTotalCount();  
23.	        // 设置总记录数  
24.	        page.setPageTotalCount(pageTotalCount);  
25.	        // 求总页码  
26.	        Integer pageTotal=pageTotalCount/pageSize;  
27.	        if(pageTotalCount%pageSize>0){
     
28.	        pageTotal+=1;  
29.	        }  
30.	        // 设置总页码  
31.	        page.setPageTotal(pageTotal);  
32.	        // 求当前页数据的开始索引  
33.	        int begin=(page.getPageNo()-1)*pageSize;  
34.	        // 求当前页数据  
35.	        List<Book> items=bookDao.queryForPageItems(begin,pageSize);  
36.	        // 设置当前页数据  
37.	        page.setItems(items);  
38.	        return page;
39.	}  

BookServelet代码:

40.	/** 
41.	 * 处理分页功能 
42.	 * 
43.	 * @param req 
44.	 * @param resp 
45.	 * @throws ServletException 
46.	 * @throws IOException 
47.	 */  
48.	protected void page(HttpServletRequest req,HttpServletResponse resp)throws ServletException,  
49.	        IOException{
     
50.	        //1 获取请求的参数 pageNo 和 pageSize  
51.	        int pageNo=WebUtils.parseInt(req.getParameter("pageNo"),1);  
52.	        int pageSize=WebUtils.parseInt(req.getParameter("pageSize"),Page.PAGE_SIZE);  
53.	        //2 调用 BookService.page(pageNo,pageSize):Page 对象  
54.	        Page<Book> page=bookService.page(pageNo,pageSize);  
55.	        //3 保存 Page 对象到 Request 域中  
56.	        req.setAttribute("page",page);  
57.	        //4 请求转发到 pages/manager/book_manager.jsp 页面  
58.	        req.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(req,resp);
59.	}  

manager_menu.jsp 中【图书管理】请求地址的修改:
在这里插入图片描述
book_manager.jsp 修改:

1.	<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
2.	<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
3.	<!DOCTYPE html>  
4.	<html>  
5.	<head>  
6.	    <meta charset="UTF-8">  
7.	    <title>图书管理</title>  
8.	    <%-- 静态包含 base 标签、css 样式、jQuery 文件 --%>  
9.	    <%@ include file="/pages/common/head.jsp"%>  
10.	    <script type="text/javascript">  
11.	        $(function () {
       
12.	            // 给删除的 a 标签绑定单击事件,用于删除的确认提示操作  
13.	            $("a.deleteClass").click(function () {
       
14.	                // 在事件的 function 函数中,有一个 this 对象。这个 this 对象,是当前正在响应事件的 dom 对象。  
15.	                /**  
16.	                 * confirm 是确认提示框函数  
17.	                 * 参数是它的提示内容  
18.	                 * 它有两个按钮,一个确认,一个是取消。  
19.	                 * 返回 true 表示点击了,确认,返回 false 表示点击取消。  
20.	                 */  
21.	                return confirm("你确定要删除【" + $(this).parent().parent().find("td:first").text() + "】?");  
22.	                // return false// 阻止元素的默认行为===不提交请求  
23.	            });  
24.	        });  
25.	    </script>  
26.	</head
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值