目录
1、首页图书表单的显示
2、分页代码的优化
3、价格筛选功能的实现
1、首页图书表单的显示 新建ClientBookServlet类
新建ClientBookServlet类
package web;import pojo.Book;import pojo.Page;import service.BookService;import service.impl.BookServiceImpl;import utils.WebUtils;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class ClientBookServlet extends baseServlet{ private BookService bookService = new BookServiceImpl(); 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(int pageNo,int pageSize)==Page,获取Page对象 Page
由index.jsp跳转到ClientBookServlet
由ClientBookServlet查询分页数据并在client/index.jsp显示
<%--开始显示图书--%>
2、分页代码的优化 将分页代码中的请求地址抽取成page类中的url属性
将分页代码中的请求地址抽取成page类中的url属性
在类Page中创建属性url
// 页码引用地址 private String url; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; }
将图书管理模块与首页模块分页功能的引用地址更改
首页上一页
下一页末页
location.href="${pageScope.basePath}${requestScope.page.url}&pageNo=" + pageNo;
在Servlet模块中给url赋值
// 设置页码的引用地址page.setUrl("manager/bookServlet?action=page");
// 设置页码的引用地址page.setUrl("client/bookServlet?action=page");
将分页功能抽取出来,使用静态包含进行引用
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--分页条的开始--%> <%--页码大于1,才显示首页和上一页--%>
<%--静态包含分页功能--%><%@ include file="/pages/common/page_nav.jsp"%>
3、价格筛选功能的实现 Dao层代码编写
Dao层代码编写
BookDao
Integer queryForPageTotalCountByPrice(int min, int max); List
BookDaoImpl
@Override public 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(); } @Override public List
测试
@Test public void queryForPageTotalCountByPrice() { System.out.println(bookDao.queryForPageTotalCountByPrice(5,50)); } @Test public void queryForPageItemsByPrice() { for (Book book : bookDao.queryForPageItemsByPrice(0, 4,5,50)) { System.out.println(book); } }
Service层代码编写
BookService
Page
BookServiceImpl
@Override public Page
测试
@Test public void pageByPrice() { System.out.println(bookService.pageByPrice(1, 4,5,50)); }
Servlet层代码编写
ClientBookServlet
protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1 获取请求的参数pageNo、ageSize、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(int pageNo,int pageSize,min,max)==Page,获取Page对象 Page
显示页面的修改
修改表单的提交地址、增加隐藏输入框指明调用的方法、价格搜索框数据的回显
设置筛选数据的页码跳转
ClientBookServlet中的pageByPrice方法
// 设置页码的引用地址 StringBuilder stringBuilder = new StringBuilder("client/bookServlet?action=pageByPrice"); if (req.getParameter("min") != null) { stringBuilder.append("&min=").append(req.getParameter("min")); } if (req.getParameter("max") != null) { stringBuilder.append("&max=").append(req.getParameter("max")); } page.setUrl(stringBuilder.toString());
注:本文章所含内容来源于尚硅谷教育,仅供学习参考使用。