文章目录
 - 1.后台管理—分页显示
 - 1.程序框架图
 - 2.编写数据模型
 -  
 - 3.编写dao层
 - 1.修改FurnDao
 -  
 - 2.修改FurnDaoImpl
 -  
 - 3.单元测试
 -  
 
 - 4.编写service层
 - 1.修改FurnService
 -  
 - 2.修改FurnServiceImpl
 - 增加方法
 - 3.单元测试
 -  
 
 - 5.编写DataUtils
 -  
 - 6.编写FurnServlet
 -  
 - 7.修改manage_menu.jsp
 - 8.修改furn_manage.jsp
 - 9.结果展示
 -  
 
 
 - 2.后台分页导航
 - 1.需求分析
 - 2.完成底部分页
 - 1.修改furn_manage.jsp
 - 2.结果展示
 - 1.限制显示5页
 - 2.末页只显示前面两页
 - 3.首页只显示后面两页
 
 
 - 3.完成修改家居后跳转原页面
 - 1.修改furn_manage.jsp
 - 2.修改furn_update.jsp
 - 3.修改FurnServlet
 -  
 - 4.结果展示
 -  
 
 - 4.完成删除家居后跳转原页面
 - 1.修改furn_manage.jsp
 - 2.修改FurnServlet
 -  
 - 3.结果展示
 -  
 
 - 5.完成添加家居后跳转原页面
 - 1.修改furn_manage.jsp
 - 2.修改furn_add.jsp
 - 3.修改FurnServlet
 -  
 - 4.结果展示
 -  
 
 
 
 - 3.首页分页
 - 1.需求分析
 - 2.分页显示家居
 - 1.编写CustomerFurnServlet
 -  
 - 2.修改index.jsp
 - 3.index.html修改为index.jsp
 -  
 
 - 3.分页导航条设置
 -  
 - 4.单元测试
 -  
 - 5.结果展示
 -  
 
 
 
 
 
  
 
1.后台管理—分页显示
 
1.程序框架图
 

 
2.编写数据模型
 
Page.java
 
package com.sxs.furns.entity;import java.util.List;
public class Page<T> {public static final Integer PAGE_SIZE = 3; private Integer pageNo; private Integer pageSize = PAGE_SIZE; private Integer pageTotalCount; private Integer totalRow; private List<T> items; private String url; public Integer getPageNo() {return pageNo;}public void setPageNo(Integer pageNo) {this.pageNo = pageNo;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}public Integer getPageTotalCount() {return pageTotalCount;}public void setPageTotalCount(Integer pageTotalCount) {this.pageTotalCount = pageTotalCount;}public Integer getTotalRow() {return totalRow;}public void setTotalRow(Integer totalRow) {this.totalRow = totalRow;}public List<T> getItems() {return items;}public void setItems(List<T> items) {this.items = items;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}
}
 
3.编写dao层
 
1.修改FurnDao
 
增加方法
 
    public int getTotalRow();public List<Furn> getPageItems(int begin, int pageSize);
 
2.修改FurnDaoImpl
 
增加方法
 
    @Overridepublic int getTotalRow() {String sql = "SELECT COUNT(*) FROM furn";return ((Number) queryScalar(sql)).intValue();}@Overridepublic List<Furn> getPageItems(int begin, int pageSize) {String sql ="select * from furn limit ?, ?";return queryMulti(sql, Furn.class, begin, pageSize);}
 
3.单元测试
 
FurnDaoTest
 
    @Testpublic void getTotalRow() {System.out.println("记录总数为:" + furnDao.getTotalRow());}@Testpublic void getPageItems() {List<Furn> pageItems = furnDao.getPageItems(3, 3);if (pageItems != null) {for (Furn pageItem : pageItems) {System.out.println(pageItem);}}}
 

 

 
4.编写service层
 
1.修改FurnService
 
增加方法
 
    public Page<Furn> page(int pageNo, int pageSize);
 
2.修改FurnServiceImpl
 
增加方法
 
    @Overridepublic Page<Furn> page(int pageNo, int pageSize) {Page<Furn> page = new Page<>();page.setPageNo(pageNo);page.setPageSize(pageSize);int totalRow = furnDao.getTotalRow();page.setTotalRow(totalRow);int pageTotalCount = totalRow / pageSize;if (totalRow % pageSize > 0) {pageTotalCount += 1;}page.setPageTotalCount(pageTotalCount);int begin = pageSize * (pageNo - 1);List<Furn> pageItems = furnDao.getPageItems(begin, pageSize);page.setItems(pageItems);return page;}
 
3.单元测试
 
FurnServiceTest
 

 

 
5.编写DataUtils
 
增加方法
 
    public static Integer parseInt(String str, Integer def) {if (null == str || "".equals(str)) {return  def;} else {return Integer.parseInt(str);}}
 
6.编写FurnServlet
 
增加方法
 
    public void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Integer pageNo = DataUtils.parseInt(req.getParameter("pageNo"), 1);Integer pageSize = DataUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE);Page<Furn> page = furnService.page(pageNo, pageSize);req.setAttribute("page", page);req.getRequestDispatcher("/views/manage/furn_manage.jsp").forward(req, resp);}
 
7.修改manage_menu.jsp
 

 
8.修改furn_manage.jsp
 

 
9.结果展示
 
1.点击家居管理
 

 
2.只展示当前页的三个数据
 

 
2.后台分页导航
 
1.需求分析
 

 
2.完成底部分页
 
1.修改furn_manage.jsp
 
        <!--  Pagination Area Start 分页导航条 --><div class="pro-pagination-style text-center mb-md-30px mb-lm-30px mt-6" data-aos="fade-up"><ul><li><a href="manage/furnServlet?action=page&pageNo=1">首页</a></li><%--有上一页再显示--%><c:if test="${requestScope.page.pageNo-1 > 0}"><li><a href="manage/furnServlet?action=page&pageNo=${requestScope.page.pageNo-1}">上页</a></li></c:if><%--最多显示5页--%><c:forEach begin="${requestScope.page.pageNo - 2 > 0 ? requestScope.page.pageNo - 2 : 1}" end="${requestScope.page.pageNo+2}" var="pageNo"><%--页数在范围内才显示--%><c:if test="${pageNo >= 1 && pageNo <= requestScope.page.pageTotalCount}"><li><%-- 如果是当前页号则显示被选中--%><a class="<c:if test="${requestScope.page.pageNo == pageNo}">active</c:if>"href="manage/furnServlet?action=page&pageNo=${pageNo}#">${pageNo}</a></li></c:if></c:forEach><%--有下一页再显示--%><c:if test="${requestScope.page.pageNo+1 <= requestScope.page.pageTotalCount}"><li><a href="manage/furnServlet?action=page&pageNo=${requestScope.page.pageNo+1}">下页</a></li></c:if><li><a href="manage/furnServlet?action=page&pageNo=${requestScope.page.pageTotalCount}">末页</a></li><li><a>共${requestScope.page.pageTotalCount}页</a></li><li><a>共${requestScope.page.totalRow}记录</a></li></ul></div><!--  Pagination Area End -->
 
2.结果展示
 
1.限制显示5页
 

 
2.末页只显示前面两页
 

 
3.首页只显示后面两页
 

 
3.完成修改家居后跳转原页面
 
1.修改furn_manage.jsp
 

 
2.修改furn_update.jsp
 

 
3.修改FurnServlet
 
更新updateFurn方法
 
    public void updateFurn(HttpServletRequest req, HttpServletResponse resp) throws IOException {String pageNo = req.getParameter("pageNo");Furn furn = DataUtils.copyParamToBean(req.getParameterMap(), new Furn());if (furnService.updateFurn(furn)) {resp.sendRedirect(super.getServletContext().getContextPath() + "/manage/furnServlet?action=page&pageNo=" + pageNo);} else {System.out.println("更新失败");}}
 
4.结果展示
 
1.修改前是第4页
 

 
2.点击修改
 

 
3.回到第4页
 

 
4.完成删除家居后跳转原页面
 
1.修改furn_manage.jsp
 

 
2.修改FurnServlet
 
更新del方法
 
    public void del(HttpServletRequest req, HttpServletResponse resp) throws IOException {String id = req.getParameter("id");String pageNo = req.getParameter("pageNo");if (furnService.deleteFurnById(Integer.parseInt(id))) {resp.sendRedirect(super.getServletContext().getContextPath() + "/manage/furnServlet?action=page&pageNo=" + pageNo);} else {System.out.println("删除失败");}}
 
3.结果展示
 
1.删除前是第四页
 

 
2.删除后还是第四页
 

 
5.完成添加家居后跳转原页面
 
1.修改furn_manage.jsp
 

 
2.修改furn_add.jsp
 

 
3.修改FurnServlet
 
更新add方法
 
    public void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException, InvocationTargetException, IllegalAccessException {Furn furn = DataUtils.copyParamToBean(req.getParameterMap(), new Furn());String pageNo = req.getParameter("pageNo");if (furnService.add(furn)) {resp.sendRedirect(super.getServletContext().getContextPath() + "/manage/furnServlet?action=page&pageNo=" + pageNo);} else {System.out.println("插入失败");}}
 
4.结果展示
 
1.添加家居前是第3页
 

 
2.添加家居后还是3页
 

 

 
3.首页分页
 
1.需求分析
 

 
2.分页显示家居
 
1.编写CustomerFurnServlet
 
CustomerFurnServlet.java
 
package com.sxs.furns.web;import com.sxs.furns.entity.Furn;
import com.sxs.furns.entity.Page;
import com.sxs.furns.service.FurnService;
import com.sxs.furns.service.impl.FurnServiceImpl;
import com.sxs.furns.utils.DataUtils;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/customerFurnServlet")
public class CustomerFurnServlet extends BasicServlet{FurnService furnService = new FurnServiceImpl();public void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Integer pageNo = DataUtils.parseInt(req.getParameter("pageNo"), 1);Integer pageSize = DataUtils.parseInt(req.getParameter("pageSize"), 8);Page<Furn> page = furnService.page(pageNo, pageSize);req.setAttribute("page", page);req.getRequestDispatcher("/views/customer/index.jsp").forward(req, resp);}
}
 
2.修改index.jsp
 
<%--Date: 2024/2/4Time: 18:42User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>$Title$</title>
</head>
<body>
<%-- 网站入口,请求转发到/customerFurnServlet--%><jsp:forward page="/customerFurnServlet?action=page"></jsp:forward>
</body>
</html>
 
3.index.html修改为index.jsp
 

 
1.修改头部
 

 
2.遍历显示家居
 

 
3.分页导航条设置
 
修改index.jsp
 

 
4.单元测试
 
图片重复问题
 

 
原因
 
- 查询的时候直接查的所有数据,select *
 - 但是javabean中的字段和imgPath 和 表中的字段img_Path不符,所以无法封装进去,就使用了之前设置的默认值
 - 在查找的时候设置一个别名即可
 
 

 

 
5.结果展示
 
1.首页显示
 

 
2.分页导航条设置
 
