• (二)翻页的实现


     

     

     Page.java

    package com.aff.bookstore.web;
    
    import java.util.List;
    
    public class Page<T> {
        // 当前第几页
        private int pageNo;
    
        // 当前页的List
        private List<T> list;
    
        // 每页显示多少条记录
        private int pageSize = 3;
    
        // 共有多少条记录
        private long totalItemNumber;
    
        public Page() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        // 构造器中需要对pageNo初始化
        public Page(int pageNo) {
            super();
            this.pageNo = pageNo;
        }
    
        //得到当前第几页,需要校验一下,不一定是合法的
        public int getPageNo() {
            if (pageNo<0) 
                pageNo=1;
            if (pageNo>getTotalPageNumber()) {
                pageNo=getTotalPageNumber();
            }    
            
            return pageNo;
        }
    
        public void setTotalItemNumber(long totalItemNumber) {
            this.totalItemNumber = totalItemNumber;
        }
        
        public int getPageSize() {
            return pageSize;
        }
    
        public void setList(List<T> list) {
            this.list = list;
        }
    
        public List<T> getList() {
            return list;
        }
    
        // 获取总页数
        public int getTotalPageNumber() {
            int totalPageNumber = (int) (totalItemNumber / pageSize);
            if (totalItemNumber % pageSize != 0) {
                totalPageNumber++;
            }
    
            return totalPageNumber;
        }
        
        
        public boolean isHasNext(){
            if (getPageNo()<getTotalPageNumber()) {
                return true;
            }
            return false;
        }
        
        public boolean isHasPrev(){
            if (getPageNo()>1) {
                return true;
            }
            return false;
        }
        
        public int getPrevPage(){
             if (isHasPrev()) {
                return getPageNo() - 1;
            }
             return getPageNo();
        }
        
        public int getNextPage(){
            if (isHasNext()) {
                return getPageNo() +1;
            }
            return getPageNo();
        }
        
    }

    CriteriaBook.java

    package com.aff.bookstore.web;
    
    public class CriteriaBook {
        private  float minPrice  = 0;
        private float maxPrice = Integer.MAX_VALUE;//2^31 - 1
        
        private int pageNo;
    
        public float getMinPrice() {
            return minPrice;
        }
    
        public void setMinPrice(float minPrice) {
            this.minPrice = minPrice;
        }
    
        public float getMaxPrice() {
            return maxPrice;
        }
    
        public void setMaxPrice(float maxPrice) {
            this.maxPrice = maxPrice;
        }
    
        public int getPageNo() {
            return pageNo;
        }
    
        public void setPageNo(int pageNo) {
            this.pageNo = pageNo;
        }
    
        public CriteriaBook() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public CriteriaBook(float minPrice, float maxPrice, int pageNo) {
            super();
            this.minPrice = minPrice;
            this.maxPrice = maxPrice;
            this.pageNo = pageNo;
        }
    
        @Override
        public String toString() {
            return "CriteriaBook [minPrice=" + minPrice + ", maxPrice=" + maxPrice + ", pageNo=" + pageNo + "]";
        }
        
    }

    BookServlet.java

    package com.aff.bookstore.servlet;
    
    import java.io.IOException;
    import java.lang.reflect.Method;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.aff.bookstore.domain.Book;
    import com.aff.bookstore.service.BookService;
    import com.aff.bookstore.web.CriteriaBook;
    import com.aff.bookstore.web.Page;
    
    @WebServlet("/bookServlet")
    public class BookServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
        }
    
        private BookService bookService = new BookService();
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String methodName = request.getParameter("method");
            try {
                Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class,
                        HttpServletResponse.class);
                method.setAccessible(true);
                method.invoke(this, request, response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        protected void getBook(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String idStr = request.getParameter("id");
            int id = -1;
            Book book = null;
    
            try {
                id = Integer.parseInt(idStr);
            } catch (NumberFormatException e) {}
    
            if (id>0) {
                book = bookService.getBook(id);
                if (book == null) {
                    response.sendRedirect(request.getContextPath() + "/errror-1.jsp");
                    return;
                }
            }
            request.setAttribute("book", book);
            request.getRequestDispatcher("/WEB-INF/pages/book.jsp").forward(request, response);
        }
    
        protected void getBooks(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String pageNoStr = request.getParameter("pageNo");
            String minPriceStr = request.getParameter("minPrice");
            String maxPriceStr = request.getParameter("maxPrice");
    
            int pageNo = 1;
            int minPrice = 0;
            int maxPrice = Integer.MAX_VALUE;
            try {
                pageNo = Integer.parseInt(pageNoStr);
            } catch (Exception e) {
            }
            try {
                minPrice = Integer.parseInt(minPriceStr);
            } catch (Exception e) {
            }
            try {
                maxPrice = Integer.parseInt(maxPriceStr);
            } catch (Exception e) {
            }
            CriteriaBook criteriaBook = new CriteriaBook(minPrice, maxPrice, pageNo);
            Page<Book> page = bookService.getPage(criteriaBook);
    
            request.setAttribute("bookpage", page);
            request.getRequestDispatcher("/WEB-INF/pages/books.jsp").forward(request, response);
        }
    
    }

    books.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@taglib   prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript" src="script/jquery-1.12.3.js"></script>
    <script type="text/javascript">
             $(function(){
                 $("a").click(function(){
                     var serializeVal = $(":hidden").serialize();
                     var href = this.href+"&"+serializeVal;
                     window.location.href = href;
                     return false; 
                 });
                 
            $("#pageNo").change(function(){
                var val = $(this).val();
                val = $.trim(val);//去除空格
                
                   //1.校验 val  是否为数字
                   var reg = /^d+$/g;
                   if(!reg.test(val)){
                       alert("输入的不是合法的页码")
                       $(this).val("")
                       return ;
                   }
                   //2.检验 val 在一个合法的范围内, 1-totalPageNumber
                   var pageNo = parseInt(val);
                   if(pageNo<1 || pageNo>parseInt("${bookpage.totalPageNumber}")){
                       alert("输入的不是合法的页码");
                       $(this).val("");
                       return;
                       }
                   //3.页面跳转,保证把之前的条件带过去
                   var href = "bookServlet?method=getBooks&pageNo="+pageNo+"&"+$(":hidden").serialize();
                   window.location.href =href ;
                   return;               
            }); 
            });  
    </script>
    </head>
    <body>
        <input type="hidden" name="minPrice"  value="${param.minPrice}"/>
        <input type="hidden" name="maxPrice"  value="${param.maxPrice}"/>
    
        <center>
            <br> <br>
            <form action="bookServlet?method=getBooks"  method="post">
            Price: <input type="text" size="1"  name="minPrice"/>    
                     <input type="text" size="1"  name="maxPrice"/>    
                     <input type="submit"  value="Submit"/>
            </form>
            <br>
            <br>
            <table cellpadding="10">
                    <c:forEach  items="${bookpage.list }" var="book">
                        <tr>
                            <td>
                                    <a href="bookServlet?method=getBook&pageNo=${bookpage.pageNo }&id=${book.id}">${book.title }</a>
                                    <br>
                                    ${book.author }
                            </td>                            
                            <td>${book.price }</td>                            
                            <td><a  href="">加入购物车</a></td>                            
                        </tr>
                    </c:forEach>
            </table>
            <br><br>
            共 ${bookpage.totalPageNumber }页&nbsp;&nbsp;当前第${bookpage.pageNo }页
            
            <c:if test="${bookpage.hasPrev }">
                    <a href="bookServlet?method=getBooks&pageNo=1">首页</a>&nbsp;&nbsp;
                    <a href="bookServlet?method=getBooks&pageNo=${bookpage.prevPage }">上一页</a>
            </c:if>
            
            <c:if test="${bookpage.hasNext }">
                    <a href="bookServlet?method=getBooks&pageNo=${bookpage.nextPage }">下一页</a>&nbsp;&nbsp;
                    <a href="bookServlet?method=getBooks&pageNo=${bookpage.totalPageNumber}">末页</a>
            </c:if>
            &nbsp;&nbsp;
            
            转到<input type="text" size="1" id="pageNo"/></center>
    </body>
    </html>

    queryCondition.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <script type="text/javascript">
             $(function(){
                 $("a").click(function(){
                     var serializeVal = $(":hidden").serialize();
                     var href = this.href+"&"+serializeVal;
                     window.location.href = href;
                     return false; 
                 });
            });  
    </script>
        
        <input type="hidden" name="minPrice"  value="${param.minPrice}"/>
        <input type="hidden" name="maxPrice"  value="${param.maxPrice}"/>
        

    目录

     

     运行效果如下

    All that work will definitely pay off
  • 相关阅读:
    js学习之函数
    面试题
    渐进增强(progressive enhancement)、优雅降级(graceful degradation)
    倒计时
    css 平行四边形
    网址URL分解
    图片延时加载
    获取元素的宽高,左边距上边距
    电商平台放大镜效果
    js笔记
  • 原文地址:https://www.cnblogs.com/afangfang/p/12907988.html
Copyright © 2020-2023  润新知