博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目阶段四:首页的分页
阅读量:3969 次
发布时间:2019-05-24

本文共 6002 字,大约阅读时间需要 20 分钟。

1、首页 index.jsp 的跳转

在这里插入图片描述

web下的index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--只负责请求转发--%>

复制一份原来的index.jsp到web下的pages下添加文件夹client下

在这里插入图片描述

/** * 首页的分页 * @param req * @param resp * @throws ServletException * @throws IOException */protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); //2 调用BookService.page(pageNo,pageSize):Page对象 Page
page = bookService.page(pageNo, pageSize); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

其web.xml配置文件:

ClientBookServlet
com.atguigu.web.ClientBookServlet
ClientBookServlet
/client/bookServlet

2、分页条的抽取

2.1、抽取分页条中请求地址为 url 变量

1.在 page 对象中添加 url 属性

// 分页条的请求地址private  String url;

2 在 Servlet 程序的 page 分页方法中设置 url 的分页请求地址

BookServlet.java:

Page
page = bookService.page(pageNo, pageSize);page.setUrl("manager/bookServlet?action=page");// //3 保存Page对象到Request域中req.setAttribute("page",page);ClientBookServlet.java://3 保存Page对象到Request域中req.setAttribute("page",page);

page_nav.jsp:

<%--大 于 首 页 , 才 显 示 --%>
首页
上一页
${i}
下一页末页

3、首页价格搜索

在这里插入图片描述

BookDao:

/**  * 查询价格在区间[min,max]里的总记录数  * @param min 最低价  * @param max 最高价  * @return 价格在区间[min,max]里的记录条数  */Integer queryForPageTotalCountByPrice(int min,int max); /**  * 查询价格在区间[min,max]里的数据信息  * @param begin 本页数据开始的索引  * @param pageSize 本页显示多少条数据  * @param min 最低价  * @param max 最高价  * @return 返回该查询结果的数据信息集合  */List
queryForPageItemsByPrice(int begin,int pageSize,int min,int max);

BookDaoImpl:

@Overridepublic Integer queryForPageTotalCountByPrice(int min, int max) {
String sql = "select count(*) from t_book where price between ? and ?"; Number count = (Number) queryForSingleValue(sql, min, max); return count.intValue();}@Overridepublic List
queryForPageItemsByPrice(int begin, int pageSize, int min, int max) {
String sql = "select `id`,`bookName`,`author`,`price`,`sales`,`stock`,`img_path` imgPath from t_book " + "where price between ? and ? order by price limit ?,?"; return queryForList(Book.class,sql,min,max,begin,pageSize);}

BookDaoTest:

@Testpublic void queryForPageTotalCountByPrice() {
System.out.println(bookDao.queryForPageTotalCountByPrice(0, 20));}@Testpublic void queryForPageItemsByPrice() {
List
books = bookDao.queryForPageItemsByPrice(0, 2, 0, 20); for (Book book : books) {
System.out.println(book); }}

BookService:

/** * 价格在区间[min,max]的page对象所含信息 * @param pageNo 第几页 * @param pageSize 一页显示几条数据 * @param min 最低价 * @param max 最高价 * @return */Page
pageByPrice(int pageNo,int pageSize,int min,int max);

BookServiceImpl:

@Overridepublic Page
pageByPrice(int pageNo, int pageSize, int min, int max) {
Page
page = new Page
(); // 设置每页显示的数量 page.setPageSize(pageSize); // 求总记录数 Integer pageTotalCount = bookDao.queryForPageTotalCountByPrice(min,max); // 设置总记录数 page.setPageTotalCount(pageTotalCount); Integer pageTotal = pageTotalCount / pageSize; if (pageTotalCount % pageSize > 0) {
pageTotal += 1; } // 设置总页码 page.setPageTotal(pageTotal); //设置当前页为第几页 page.setPageNo(pageNo); // 求当前页数据的开始索引 int begin = (page.getPageNo() - 1) * pageSize; // 求当前页数据 List
items = bookDao.queryForPageItemsByPrice(begin,pageSize,min,max); page.setItems(items); return page;}

BookServiceTest:

@Testpublic void pageByPrice() {
Page
bookPage = bookService.pageByPrice(1, 4, 0, 30); System.out.println(bookPage);}

ClientBookServlet:

protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); int min = WebUtils.parseInt(req.getParameter("min"), 0); int max = WebUtils.parseInt(req.getParameter("max"), Integer.MAX_VALUE); //2 调用BookService.page(pageNo,pageSize):Page对象 Page
page = bookService.pageByPrice(pageNo,pageSize,min,max); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

index.jsp:

价格:
元 -

修改在区间[min,max]里显示出来数据的页码

protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 获取请求的参数 pageNo 和 pageSize,min,max int pageNo = WebUtils.parseInt(req.getParameter("pageNo"), 1); int pageSize = WebUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE); int min = WebUtils.parseInt(req.getParameter("min"), 0); int max = WebUtils.parseInt(req.getParameter("max"), Integer.MAX_VALUE); //2 调用BookService.pageByPrice(pageNo,pageSize):Page对象 Page
page = bookService.pageByPrice(pageNo, pageSize, min, max); StringBuilder sb = new StringBuilder("client/bookServlet?action=pageByPrice"); // 如果最小价格的参数,追加到分页条的地址参数中 if(req.getParameter("min") != null){
sb.append("&min=").append(req.getParameter("min")); } // 如果最大价格的参数,追加到分页条的地址参数中 if(req.getParameter("max") != null){
sb.append("&max=").append(req.getParameter("max")); } page.setUrl(sb.toString()); //3 保存Page对象到Request域中 req.setAttribute("page",page); //4 请求转发到pages/manager/book_manager.jsp页面 req.getRequestDispatcher("/pages/client/index.jsp").forward(req,resp);}

在这里插入图片描述

转载地址:http://zquki.baihongyu.com/

你可能感兴趣的文章
IF 语句
查看>>
循环语句
查看>>
DB2 临时表
查看>>
ITERATE、LEAVE、GOTO和RETURN
查看>>
异常处理
查看>>
存储过程
查看>>
动态SQL(Dynamic SQL)
查看>>
在存储过程之间传递数据
查看>>
迁移存储过程
查看>>
GET DIAGNOSTIC 语句
查看>>
Python 简介
查看>>
Python 注释
查看>>
Python 变量
查看>>
Python 数据类型 -- 数字
查看>>
Spring 管理对象
查看>>
Spring 自定义对象初始化及销毁
查看>>
Spring Batch 环境设置
查看>>
字符组转译序列
查看>>
字符转译序列
查看>>
Java 数据类型
查看>>