学习博客:代码优化-抽取分页条信息

因为图书项目这里的分页栏我们用在了多个地方于是乎我们就打算给他抽取出来作为一个静态分页来使用。

这是静态分页:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/8/21
  Time: 15:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div id="page_nav">
    <c:if test="${requestScope.page.pageNo>1}">
        <a href="${requestScope.page.url}&pageNo=1 ">首页</a>
        <a href="${requestScope.page.url}&pageNo=${requestScope.page.pageNo-1}">上一页</a>

    </c:if>
    <c:choose>
        <%--				如果总页码小于等于5的情况,页码的范围是: 1-总页码--%>
        <c:when test="${requestScope.page.pageTotal<=5}">
            <c:set var="begin" value="${1}"/>
            <c:set var="end" value="${requestScope.page.pageTotal}"/>

        </c:when>
        <c:when test="${requestScope.page.pageTotal>5}">
            <%--					情况2:总页码大于5的情况。假设一共10--%>
            <c:choose>
                <%--					小情况1:当前页码为前面3: 1, 2, 3的情况,页码范围是: 1-5.--%>
                <c:when test="${requestScope.page.pageNo<=3}">
                    <c:set var="begin" value="${1}"/>
                    <c:set var="end" value="${5}"/>
                </c:when>
                <%--						小情况2:当前页码为最后3个,8, 910,页码范围是:总页码减4-总页码--%>
                <c:when test="${requestScope.page.pageNo>requestScope.page.pageTotal-3}">
                    <c:set var="begin" value="${requestScope.page.pageTotal-4}"/>
                    <c:set var="end" value="${requestScope.page.pageTotal}"/>
                </c:when>
                <%--						小情况3: 4, 5, 6, 7,页码范围是:当前页码减2-当前页码加2|--%>
                <c:otherwise>
                    <c:set var="begin" value="${requestScope.page.pageNo-2}"/>
                    <c:set var="end" value="${requestScope.page.pageNo+2}"/>

                </c:otherwise>
            </c:choose>
        </c:when>
    </c:choose>
    <c:forEach begin="${begin}" end="${end}" var="i">
        <c:if test="${i!=requestScope.page.pageNo}">
            <a href="${requestScope.page.url}&pageNo=${i}">${i}</a>
        </c:if>
        <c:if test="${i==requestScope.page.pageNo}">
            【${requestScope.page.pageNo}</c:if>
    </c:forEach>

    <c:if test="${requestScope.page.pageNo<requestScope.page.pageTotal}">
        <a href="${requestScope.page.url}&pageNo=${requestScope.page.pageNo+1}">下一页</a>
        <a href="${requestScope.page.url}&pageNo=${requestScope.page.pageTotal}">末页</a>
    </c:if>
    共${requestScope.page.pageTotal}页,${requestScope.page.pageTotalCount}条记录
    到第<input value="${requestScope.page.pageNo}" name="pn"
             id="pn_input"/><input id="searchPageBtn"type="button" value="确定">
    <script type="text/javascript">
        $(function () {
            $("a.deleteClass").click(function () {
                var src=$(this).parent().parent().find("td:first").text();
                return confirm("你确定要删除【"+ src +"】吗?");

            });
            $("#searchPageBtn").click(function () {
                var pageNo=$("#pn_input").val();
                var pageTotal=${requestScope.page.pageTotal};
                if (pageNo<=pageTotal&&pageNo>0){
                    location.href="${requestScope.basePath}${requestScope.page.url}&pageNo="+pageNo;
                }
                else{
                    alert("输入有误,请重新输入");
                }
            });
        });
    </script>
</div>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>书城首页</title>
	<%@include file="/pages/common/head.jsp"%>
<link type="text/css" rel="stylesheet" href="static/css/style.css" >
</head>

<body>
	
	<div id="header">
			<img class="logo_img" alt="" src="static/img/logo.gif" >
			<span class="wel_word">网上书城</span>
			<div>
				<a href="pages/user/login.jsp">登录</a> |
				<a href="pages/user/regist.jsp">注册</a> &nbsp;&nbsp;
				<a href="pages/cart/cart.jsp">购物车</a>
				<a href="pages/manager/manager.jsp">后台管理</a>
			</div>
	</div>
	<div id="main">
		<div id="book">
			<div class="book_cond">
				<form action="" method="get">
					价格:<input id="min" type="text" name="min" value="">- 
						<input id="max" type="text" name="max" value=""><input type="submit" value="查询" />
				</form>
			</div>
			<div style="text-align: center">
				<span>您的购物车中有3件商品</span>
				<div>
					您刚刚将<span style="color: red">时间简史</span>加入到了购物车中
				</div>
			</div>

			

			<c:forEach items="${requestScope.page.items}" var="book">
			<div class="b_list">
				<div class="img_div">
					<img class="book_img" alt="" src="${book.imgPath}" />
				</div>
				<div class="book_info">
					<div class="book_name">
						<span class="sp1">书名:</span>
						<span class="sp2">${book.name}</span>
					</div>
					<div class="book_author">
						<span class="sp1">作者:</span>
						<span class="sp2">${book.author}</span>
					</div>
					<div class="book_price">
						<span class="sp1">价格:</span>
						<span class="sp2">${book.price}</span>
					</div>
					<div class="book_sales">
						<span class="sp1">销量:</span>
						<span class="sp2">${book.sales}</span>
					</div>
					<div class="book_amount">
						<span class="sp1">库存:</span>
						<span class="sp2">${book.stock}</span>
					</div>
					<div class="book_add">
						<button>加入购物车</button>
					</div>
				</div>
			</div>
			</c:forEach>
		</div>

		<%@include file="/pages/common/page_nav.jsp"%>
		</div>
	

	
	<div id="bottom">
 	<%@include file="/pages/common/footer.jsp"%>
	</div>
</body>
</html>

写的servlet程序

package cn.zsp.web;

import cn.zsp.pojo.Book;
import cn.zsp.pojo.Page;
import cn.zsp.service.impl.BookServiceImpl;
import cn.zsp.utils.WebUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class BookServlet extends  BaseServlet{
        private BookServiceImpl bookService =new BookServiceImpl();

    /**
     * 处理分页功能
     * @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"),4);
//      2调用BookService . page(pageNo, pagesize): Page对象
        Page<Book> page = bookService.page(pageNo, pageSize);
//      3保存Page对象到Request域中
        page.setUrl("manager/bookServlet?action=page");
        req.setAttribute("page",page);
//      4请求转发到pages/manager/book_ manager. jsp页面
        req.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(req,resp);
    }

    protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            int pageNo=WebUtils.parseInt(req.getParameter("pageNo"),0);
            pageNo+=1;
        //        1,获取请求的参数==封装成为Book对象
            Book book = WebUtils.copyParamToBean(req.getParameterMap(),
                    new Book());
//        2,调用BookService. addBook()保存图书
            bookService.addBook(book);
//        3,跳到图书列表页面
//            req.getRequestDispatcher("manager/bookServlet?action=list");
//        这里使用转发如果用户在完成页面重复按f5会重复添加所以我们这里使用请求重定向来实现跳转
        resp.sendRedirect(req.getContextPath()+"/manager/bookServlet" +
                "?action=page&pageNo="+pageNo);
    }
    protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String id = req.getParameter("id");
        bookService.deleteBookById(WebUtils.parseInt(id));
        resp.sendRedirect(req.getContextPath()+"/manager/bookServlet" +
                "?action=page&pageNo="+req.getParameter("pageNo"));
    }
    protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());
        System.out.println(book.getId());
        bookService.updateBook(book);
        resp.sendRedirect(req.getContextPath()+"/manager/bookServlet" +
                "?action=page&pageNo="+req.getParameter("pageNo"));
    }
    protected void getBook(HttpServletRequest req,
                           HttpServletResponse resp) throws ServletException, IOException {
        String id =req.getParameter("id");
        Book book = bookService.queryBookById(WebUtils.parseInt(id));
        req.setAttribute("books",book);
        req.getRequestDispatcher("/pages/manager/book_edit.jsp").forward(req,resp);
    }

    protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        通过BookService查询全部图书
//        把全部图书保存到Request域中
//        请求转发到/pages/manager/book_ manager. jsp页面
        List<Book>  books = bookService.queryBooks();
        req.setAttribute("books",books);
        req.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(req,resp);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值