{"id":2488,"date":"2022-12-11T22:02:45","date_gmt":"2022-12-11T14:02:45","guid":{"rendered":"https:\/\/qaqaq.top\/?p=2488"},"modified":"2022-12-19T20:45:45","modified_gmt":"2022-12-19T12:45:45","slug":"%e4%b9%a6%e5%9f%8e%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%ba%94%e9%98%b6%e6%ae%b5%ef%bc%9a%e5%9b%be%e4%b9%a6%e5%88%86%e9%a1%b5%e7%9a%84%e5%88%86%e6%9e%90%e3%80%81%e4%b9%a6%e5%9f%8e%e9%a1%b9%e7%9b%ae-%e5%88%86","status":"publish","type":"post","link":"https:\/\/qaqaq.top\/?p=2488","title":{"rendered":"\u4e66\u57ce\u9879\u76ee-\u7b2c\u4e94\u9636\u6bb5\uff1a\u56fe\u4e66\u5206\u9875\u6a21\u5757"},"content":{"rendered":"\n<p>\u4e66\u57ce\u9879\u76ee-\u7b2c\u4e94\u9636\u6bb5\uff1a\u56fe\u4e66\u5206\u9875\u7684\u5206\u6790\u3001\u4e66\u57ce\u9879\u76ee-\u5206\u9875\u6a21\u578bPage\u5bf9\u8c61\u7684\u521b\u5efa\u3001\u4e66\u57ce\u9879\u76ee-\u5206\u9875\u521d\u6b65\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u9996\u9875\u3001\u4e0a\u4e00\u9875\u3001\u4e0b\u4e00\u9875\u3001\u672b\u9875\u7684\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u8df3\u5230\u6307\u5b9a\u9875\u7801\u529f\u80fd\u7684\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u6570\u636e\u6709\u6548\u8fb9\u5883\u68c0\u67e5\u3001\u4e66\u57ce\u9879\u76ee-\u5206\u9875\u6761\u9875\u7801\u7684\u8f93\u51fa\u3001\u4e66\u57ce\u9879\u76ee-\u4fee\u6539\u5206\u9875\u5bf9\u539f\u6765\uff0c\u6dfb\u52a0\u3001\u5220\u9664\u3001\u4fee\u6539\u7684\u5f71\u54cd\u3001\u4e66\u57ce\u9879\u76ee-\u524d\u53f0\u5206\u9875\u7684\u521d\u6b65\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u5206\u9875\u6761\u7684\u62bd\u53d6\u3001\u4e66\u57ce\u9879\u76ee-\u4ef7\u683c\u533a\u95f4\u641c\u7d22\u5e76\u5206\u9875\u7684\u5206\u6790\u3001\u4e66\u57ce\u9879\u76ee-\u4ef7\u683c\u533a\u95f4\u641c\u7d22\u5e76\u5206\u9875\u529f\u80fd\u7684\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u641c\u7d22\u4ef7\u683c\u533a\u95f4\u7684\u56de\u663e\u3001\u4e66\u57ce\u9879\u76ee-\u89e3\u51b3\u5206\u9875\u6761\u4e2d\u4e0d\u5e26\u4ef7\u683c\u533a\u95f4\u7684bug<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u9879\u76ee\u7b2c\u4e94\u9636\u6bb5-\u56fe\u4e66\u5206\u9875<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">2\u3001\u56fe\u4e66\u5206\u9875<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1)\u5206\u9875\u6a21\u5757\u7684\u5206\u6790<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-199-1024x590.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"590\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-199-1024x590.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2489\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2)\u5206\u9875\u6a21\u578b Page \u7684\u62bd\u53d6\uff08\u5f53\u524d\u9875\u6570\uff0c\u603b\u9875\u6570\uff0c\u603b\u8bb0\u5f55\u6570\uff0c\u5f53\u524d\u9875\u6570\u636e\uff0c\u6bcf\u9875\u8bb0\u5f55\u6570\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-11 \u4e0b\u5348 1:14\n *\/\n\n\/**\n * Page\u662f\u5206\u9875\u7684\u6a21\u578b\u5bf9\u8c61\n * @param &lt;T&gt;   \u662f\u5177\u4f53\u7684\u6a21\u5757\u7684javaBean\u7c7b\n *\/\npublic class Page &lt;T&gt; {\n\n    public static final Integer PAGE_SIZE = 4;\n\n    \/\/ \u5f53\u524d\u9875\u7801\n    private Integer pageNo;\n    \/\/ \u603b\u9875\u7801\n    private Integer pageTotal;\n    \/\/ \u5f53\u524d\u9875\u663e\u793a\u6570\u91cf\n    private Integer pageSize = PAGE_SIZE;\n    \/\/ \u603b\u8bb0\u5f55\u6570\n    private Integer pageTotalCount;\n    \/\/ \u5f53\u524d\u9875\u6570\u636e\n    private List&lt;T&gt; itmes;\n    \/\/ \u5206\u9875\u6761\u7684\u8bf7\u6c42\u5730\u5740\n    private String url;\n\n    public Page() {\n    }\n\n    public Page(Integer pageNo, Integer pageTotal, Integer pageSize, Integer pageTotalCount, List&lt;T&gt; itmes, String url) {\n        this.pageNo = pageNo;\n        this.pageTotal = pageTotal;\n        this.pageSize = pageSize;\n        this.pageTotalCount = pageTotalCount;\n        this.itmes = itmes;\n        this.url = url;\n    }\n\n    public Integer getPageNo() {\n        return pageNo;\n    }\n\n    public void setPageNo(Integer pageNo) {\n        this.pageNo = pageNo;\n    }\n\n    public Integer getPageTotal() {\n        return pageTotal;\n    }\n\n    public void setPageTotal(Integer pageTotal) {\n        this.pageTotal = pageTotal;\n    }\n\n    public Integer getPageSize() {\n        return pageSize;\n    }\n\n    public void setPageSize(Integer pageSize) {\n        this.pageSize = pageSize;\n    }\n\n    public Integer getPageTotalCount() {\n        return pageTotalCount;\n    }\n\n    public void setPageTotalCount(Integer pageTotalCount) {\n        this.pageTotalCount = pageTotalCount;\n    }\n\n    public List&lt;T&gt; getItmes() {\n        return itmes;\n    }\n\n    public void setItmes(List&lt;T&gt; itmes) {\n        this.itmes = itmes;\n    }\n\n    public String getUrl() {\n        return url;\n    }\n\n    public void setUrl(String url) {\n        this.url = url;\n    }\n\n    @Override\n    public String toString() {\n        return \"Page{\" +\n                \"pageNo=\" + pageNo +\n                \", pageTotal=\" + pageTotal +\n                \", pageSize=\" + pageSize +\n                \", pageTotalCount=\" + pageTotalCount +\n                \", itmes=\" + itmes +\n                \", url='\" + url + '\\'' +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3)\u5206\u9875\u7684\u521d\u6b65\u5b9e\u73b0<\/h3>\n\n\n\n<p>BookDao \u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao;\n\nimport top.qaqaq.pojo.Book;\n\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-10 \u4e0b\u5348 5:36\n *\/\npublic interface BookDao {\n\n    \/**\n     * \u6dfb\u52a0\u56fe\u4e66\n     * @param book\n     * @return\n     *\/\n    public int addBook(Book book);\n\n    \/**\n     * \u6839\u636e\u56fe\u4e66id\u5220\u9664\u56fe\u4e66\n     * @param id\n     * @return\n     *\/\n    public int deleteBookById(Integer id);\n\n    \/**\n     * \u6839\u636e\u56fe\u4e66id\u66f4\u65b0\u56fe\u4e66\n     * @param book\n     * @return\n     *\/\n    public int updateBook(Book book);\n\n    \/**\n     * \u6839\u636e\u56fe\u4e66id\u67e5\u8be2\u56fe\u4e66\n     * @param id\n     * @return\n     *\/\n    public Book queryBookById(Integer id);\n\n    \/**\n     * \u67e5\u8be2\u5168\u90e8\u56fe\u4e66\n     * @return\n     *\/\n    public List&lt;Book&gt; queryBooks();\n\n    \/**\n     * \u67e5\u8be2\u603b\u8bb0\u5f55\u6570\n     * @return\n     *\/\n    Integer queryForPageTotalCount();\n\n    \/**\n     * \u904d\u5386\u5f53\u524d\u9875\u6570\u636e\n     * @param begin\n     * @param pageSize\n     * @return\n     *\/\n    List&lt;Book&gt; queryForPageItems(int begin, int pageSize);\n\n    \/**\n     * \u6309\u4ef7\u683c\u533a\u95f4\u67e5\u8be2\u603b\u8bb0\u5f55\u6570\n     * @param min\n     * @param max\n     * @return\n     *\/\n    Integer queryForPageTotalCountByPrice(int min, int max);\n\n    \/**\n     * \u6309\u4ef7\u683c\u533a\u95f4\u904d\u5386\u5f53\u524d\u9875\u6570\u636e\n     * @param begin\n     * @param pageSize\n     * @param min\n     * @param max\n     * @return\n     *\/\n    List&lt;Book&gt; queryForPageItemsByPrice(int begin, int pageSize, int min, int max);\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao.impl;\n\nimport top.qaqaq.dao.BookDao;\nimport top.qaqaq.pojo.Book;\n\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-10 \u4e0b\u5348 5:40\n *\/\npublic class BookDaoImpl extends BaseDao implements BookDao {\n    @Override\n    public int addBook(Book book) {\n\n        String sql = \"insert into t_book(name,author,price,sales,stock,img_path) values(?,?,?,?,?,?)\";\n\n        return update(sql, book.getName(), book.getAuthor(), book.getPrice(), book.getSales(), book.getStock(), book.getImgpath());\n    }\n\n    @Override\n    public int deleteBookById(Integer id) {\n\n        String sql = \"delete from t_book where id = ?\";\n\n        return update(sql, id);\n    }\n\n    @Override\n    public int updateBook(Book book) {\n\n        String sql = \"update t_book set name=?,author=?,price=?,sales=?,stock=?,img_path=? where id = ?\";\n\n        return update(sql, book.getName(), book.getAuthor(), book.getPrice(), book.getSales(), book.getStock(), book.getImgpath(), book.getId());\n    }\n\n    @Override\n    public Book queryBookById(Integer id) {\n\n        String sql = \"select id,name,author,price,sales,stock,img_path imgpath from t_book where id = ?\";\n\n        return queryForOne(Book.class, sql, id);\n    }\n\n    @Override\n    public List&lt;Book&gt; queryBooks() {\n\n        String sql = \"select id,name,author,price,sales,stock,img_path imgpath from t_book\";\n\n        return queryForList(Book.class, sql);\n    }\n\n    @Override\n    public Integer queryForPageTotalCount() {\n\n        String sql = \"select count(*) from t_book\";\n        Number count = (Number) queryForSingleValue(sql);\n        return count.intValue();\n    }\n\n    @Override\n    public List&lt;Book&gt; queryForPageItems(int begin, int pageSize) {\n\n        String sql = \"select id,name,author,price,sales,stock,img_path imgpath from t_book limit ?,?\";\n        return queryForList(Book.class,sql,begin,pageSize);\n    }\n\n    @Override\n    public Integer queryForPageTotalCountByPrice(int min, int max) {\n\n        String sql = \"select count(*) from t_book where price between ? and ?\";\n        Number count = (Number) queryForSingleValue(sql,min,max);\n        return count.intValue();\n    }\n\n    @Override\n    public List&lt;Book&gt; queryForPageItemsByPrice(int begin, int pageSize, int min, int max) {\n        String sql = \"select id,name,author,price,sales,stock,img_path imgpath \" +\n                \"from t_book where price between ? and ? order by price limit ?,?\";\n        return queryForList(Book.class,sql,min,max,begin,pageSize);\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-200.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"847\" height=\"332\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-200.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2490\"  sizes=\"(max-width: 847px) 100vw, 847px\" \/><\/div><\/figure>\n\n\n\n<p>BookService \u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service;\n\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Page;\n\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-10 \u4e0b\u5348 7:37\n *\/\npublic interface BookService {\n\n    \/**\n     * \u6dfb\u52a0\u56fe\u4e66\n     * @param book\n     *\/\n    public void addBook(Book book);\n\n    \/**\n     * \u6839\u636e\u56fe\u4e66id\u5220\u9664\u56fe\u4e66\n     * @param id\n     *\/\n    public void deleteBookById(Integer id);\n\n    \/**\n     * \u6839\u636e\u56fe\u4e66id\u66f4\u65b0\u56fe\u4e66\n     * @param book\n     *\/\n    public void updateBook(Book book);\n\n    \/**\n     * \u6839\u636e\u56fe\u4e66id\u67e5\u8be2\u56fe\u4e66\n     * @param id\n     * @return\n     *\/\n    public Book queryBookById(Integer id);\n\n    \/**\n     * \u67e5\u8be2\u5168\u90e8\u56fe\u4e66\n     * @return\n     *\/\n    public List&lt;Book&gt; queryBooks();\n\n    \/**\n     * \u56fe\u4e66\u5206\u9875\n     * @param pageNo\n     * @param pageSize\n     * @return\n     *\/\n    Page&lt;Book&gt; page(int pageNo, int pageSize);\n\n    \/**\n     * \u6309\u4ef7\u683c\u67e5\u627e \u56fe\u4e66\u5206\u9875\n     * @param pageNo\n     * @param pageSize\n     * @param min\n     * @param max\n     * @return\n     *\/\n    Page&lt;Book&gt; pageByPrice(int pageNo, int pageSize, int min, int max);\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service.impl;\n\nimport top.qaqaq.dao.BookDao;\nimport top.qaqaq.dao.impl.BookDaoImpl;\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Page;\nimport top.qaqaq.service.BookService;\n\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-10 \u4e0b\u5348 7:42\n *\/\npublic class BookServiceImpl implements BookService {\n\n    private BookDao bookDao = new BookDaoImpl();\n\n    @Override\n    public void addBook(Book book) {\n        bookDao.addBook(book);\n    }\n\n    @Override\n    public void deleteBookById(Integer id) {\n        bookDao.deleteBookById(id);\n    }\n\n    @Override\n    public void updateBook(Book book) {\n        bookDao.updateBook(book);\n    }\n\n    @Override\n    public Book queryBookById(Integer id) {\n        return bookDao.queryBookById(id);\n    }\n\n    @Override\n    public List&lt;Book&gt; queryBooks() {\n        return bookDao.queryBooks();\n    }\n\n    @Override\n    public Page&lt;Book&gt; page(int pageNo, int pageSize) {\n        Page&lt;Book&gt; page = new Page&lt;Book&gt;();\n\n        \/\/ \u8bbe\u7f6e\u6bcf\u9875\u663e\u793a\u7684\u6570\u91cf\n        page.setPageSize(pageSize);\n\n        \/\/ \u6c42\u603b\u8bb0\u5f55\u6570\n        Integer pageTotalCount = bookDao.queryForPageTotalCount();\n        \/\/ \u8bbe\u7f6e\u603b\u8bb0\u5f55\u6570\n        page.setPageTotalCount(pageTotalCount);\n\n        \/\/ \u6c42\u603b\u9875\u7801\n        Integer pageTotal = pageTotalCount \/ pageSize;\n        if (pageTotalCount % pageSize &gt; 0){\n            pageTotal += 1;\n        }\n        \/\/ \u8bbe\u7f6e\u603b\u9875\u7801\n        page.setPageTotal(pageTotal);\n\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u7801\n        page.setPageNo(pageNo);\n\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\u7684\u5f00\u59cb\u7d22\u5f15\n        int begin = (page.getPageNo() - 1) * pageSize;\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\n        List&lt;Book&gt; items = bookDao.queryForPageItems(begin,pageSize);\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u6570\u636e\n        page.setItmes(items);\n\n        return page;\n    }\n\n    @Override\n    public Page&lt;Book&gt; pageByPrice(int pageNo, int pageSize, int min, int max) {\n        Page&lt;Book&gt; page = new Page&lt;Book&gt;();\n\n        \/\/ \u8bbe\u7f6e\u6bcf\u9875\u663e\u793a\u7684\u6570\u91cf\n        page.setPageSize(pageSize);\n\n        \/\/ \u6c42\u603b\u8bb0\u5f55\u6570\n        Integer pageTotalCount = bookDao.queryForPageTotalCountByPrice(min, max);\n        \/\/ \u8bbe\u7f6e\u603b\u8bb0\u5f55\u6570\n        page.setPageTotalCount(pageTotalCount);\n\n        \/\/ \u6c42\u603b\u9875\u7801\n        Integer pageTotal = pageTotalCount \/ pageSize;\n        if (pageTotalCount % pageSize &gt; 0){\n            pageTotal += 1;\n        }\n        \/\/ \u8bbe\u7f6e\u603b\u9875\u7801\n        page.setPageTotal(pageTotal);\n\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u7801\n        page.setPageNo(pageNo);\n\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\u7684\u5f00\u59cb\u7d22\u5f15\n        int begin = (page.getPageNo() - 1) * pageSize;\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\n        List&lt;Book&gt; items = bookDao.queryForPageItemsByPrice(begin,pageSize,min,max);\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u6570\u636e\n        page.setItmes(items);\n\n        return page;\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-201.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"892\" height=\"698\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-201.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2491\"  sizes=\"(max-width: 892px) 100vw, 892px\" \/><\/div><\/figure>\n\n\n\n<p>BookServlet \u7a0b\u5e8f\u7684\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Page;\nimport top.qaqaq.service.BookService;\nimport top.qaqaq.service.impl.BookServiceImpl;\nimport top.qaqaq.utils.WebUtils;\n\nimport java.io.IOException;\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-10 \u4e0b\u5348 7:51\n *\/\npublic class BookServlet extends BaseServlet {\n\n    private BookService bookService = new BookServiceImpl();\n\n    \/**\n     * \u5904\u7406\u5206\u9875\u529f\u80fd\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 pageNo \u548c pageSize\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),1);\n\n        int pageSize = WebUtils.parseInt(req.getParameter(\"pageSize\"), Page.PAGE_SIZE);\n        \/\/ 2. \u8c03\u7528BookService.page(pageNo,PageSize)\uff1aPage\u5bf9\u8c61\n        Page&lt;Book&gt; page = bookService.page(pageNo,pageSize);\n\n        page.setUrl(\"manager\/bookServlet?action=page\");\n        \n        \/\/ 3. \u4fdd\u5b58Page\u5bf9\u8c61\u5230Request\u57df\u4e2d\n        req.setAttribute(\"page\",page);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/manager\/book_manager.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/manager\/book_manager.jsp\").forward(req,resp);\n\n    }\n\n    \/**\n     * \u8d1f\u8d23\u6dfb\u52a0\u56fe\u4e66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),0);\n        pageNo += 1;\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570==\u5c01\u88c5\u6210\u4e3aBook\u5bf9\u8c61\n        Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());\n        \/\/ 2. \u8c03\u7528BookService.addBook()\u4fdd\u5b58\u56fe\u4e66\n        bookService.addBook(book);\n        \/\/ 3. \u8df3\u5230\u56fe\u4e66\u5217\u8868\u9875\u9762\n        \/\/      \/manager\/bookServlet?action=list\n\n        \/\/ \u5982\u679c\u4f7f\u7528\u8bf7\u6c42\u8f6c\u53d1\uff0c\u5219\u4e3a\u4e00\u6b21\u8bf7\u6c42\uff0c\u5237\u65b0\u4f1a\u91cd\u590d\u63d0\u4ea4\u6570\u636e\n\/\/        req.getRequestDispatcher(\"\/manager\/bookServlet?action=list\").forward(req,resp);\n        \/\/ \u6240\u4ee5\u4f7f\u7528\u8bf7\u6c42\u91cd\u5b9a\u5411\n        resp.sendRedirect(req.getContextPath() + \"\/manager\/bookServlet?action=page&amp;pageNo=\" + pageNo);\n\n    }\n\n    \/**\n     * \u8d1f\u8d23\u5220\u9664\u56fe\u4e66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570id\uff0c\u56fe\u4e66\u7f16\u7a0b\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n\n        \/\/ 2. \u8c03\u7528bookService.deleteBookById();\u5220\u9664\u56fe\u4e66\n        bookService.deleteBookById(id);\n        \/\/ 3. \u91cd\u5b9a\u5411\u56de\u56fe\u4e66\u5217\u8868\u7ba1\u7406\u9875\u9762\n        \/\/      \/book\/manager\/bookServlet?action=list\n        resp.sendRedirect(req.getContextPath() + \"\/manager\/bookServlet?action=page&amp;pageNo=\" + req.getParameter(\"pageNo\"));\n    }\n\n    \/**\n     * \u4fdd\u5b58\u4fee\u6539\u56fe\u4e66\u7684\u64cd\u4f5c\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570==\u5c01\u88c5\u6210\u4e3aBook\u5bf9\u8c61\n        Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());\n        \/\/ 2. \u8c03\u7528BookService.updateBook( book );\u4fee\u6539\u56fe\u4e66\n        bookService.updateBook(book);\n        \/\/ 3. \u91cd\u5b9a\u5411\u56de\u56fe\u4e66\u5217\u8868\u7ba1\u7406\u9875\u9762\n        \/\/      \u5730\u5740\uff1a\/\u5de5\u7a0b\u540d\/manager\/bookServlet?action=list\n        resp.sendRedirect(req.getContextPath() + \"\/manager\/bookServlet?action=page&amp;pageNo=\" + req.getParameter(\"pageNo\"));\n\n    }\n\n    \/**\n     * \u83b7\u53d6\u8981\u4fee\u6539\u7684\u56fe\u4e66\u4fe1\u606f\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void getBook(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570\u56fe\u4e66\u7f16\u53f7\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        \/\/ 2. \u8c03\u7528bookService.queryBookById\u67e5\u8be2\u56fe\u4e66\n        Book book = bookService.queryBookById(id);\n        \/\/ 3. \u4fdd\u5b58\u56fe\u4e66\u5230Request\u57df\u4e2d\n        req.setAttribute(\"book\",book);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\u3002pages\/manager\/book_edit.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/manager\/book_edit.jsp\").forward(req,resp);\n    }\n\n    \/**\n     * \u8d1f\u8d23\u904d\u5386\u56fe\u4e66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u901a\u8fc7BookService\u67e5\u8be2\u5168\u90e8\u56fe\u4e66\n        List&lt;Book&gt; books = bookService.queryBooks();\n        \/\/ 2. \u628a\u5168\u90e8\u56fe\u4e66\u4fdd\u5b58\u5230Request\u57df\u4e2d\n        req.setAttribute(\"books\", books);\n        \/\/ 3. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/manager\/book_manager.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/manager\/book_manager.jsp\").forward(req,resp);\n\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-202-1024x460.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"460\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-202-1024x460.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2492\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>manager_menu.jsp \u4e2d\u3010\u56fe\u4e66\u7ba1\u7406\u3011\u8bf7\u6c42\u5730\u5740\u7684\u4fee\u6539\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%--\n  Created by IntelliJ IDEA.\n  User: ZRich\n  Date: 2022\/12\/9\n  Time: \u4e0b\u5348 5:33\n  To change this template use File | Settings | File Templates.\n--%&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n\n&lt;div&gt;\n    &lt;%-- action=list\u8868\u793a\u8c03\u7528BookServlet.java\u91cc\u7684list\u65b9\u6cd5 --%&gt;\n    &lt;a href=\"manager\/bookServlet?action=page\"&gt;\u56fe\u4e66\u7ba1\u7406&lt;\/a&gt;\n    &lt;a href=\"pages\/manager\/order_manager.jsp\"&gt;\u8ba2\u5355\u7ba1\u7406&lt;\/a&gt;\n    &lt;a href=\"index.jsp\"&gt;\u8fd4\u56de\u5546\u57ce&lt;\/a&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-203.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"77\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-203.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2493\"  sizes=\"(max-width: 551px) 100vw, 551px\" \/><\/div><\/figure>\n\n\n\n<p>book_manager.jsp \u4fee\u6539\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u56fe\u4e66\u7ba1\u7406&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\t&lt;script type=\"text\/javascript\"&gt;\n\t\t$(function () {\n\t\t\t\/\/ \u7ed9\u5220\u9664\u7684a\u6807\u7b7e\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\uff0c\u7528\u4e8e\u5220\u9664\u7684\u786e\u8ba4\u63d0\u793a\u64cd\u4f5c\n\t\t\t$(\"a.deleteClass\").click(function () {\n\t\t\t\t\/\/\u5728\u4e8b\u4ef6\u7684function\u51fd\u6570\u4e2d\uff0c\u6709\u4e00\u4e2athis\u5bf9\u8c61\u3002\u8fd9\u4e2athis\u5bf9\u8c61\uff0c\u662f\u5f53\u524d\u6b63\u5728\u54cd\u5e94\u4e8b\u4ef6\u7684dom\u5bf9\u8c61\u3002\n\n\t\t\t\t\/**\n\t\t\t\t * confirm\u662f\u786e\u8ba4\u63d0\u793a\u6846\u51fd\u6570\n\t\t\t\t * \u53c2\u6570\u662f\u5b83\u7684\u63d0\u793a\u5185\u5bb9\n\t\t\t\t * \u5b83\u6709\u4e24\u4e2a\u6309\u94ae\uff0c\u4e00\u4e2a\u786e\u8ba4\uff0c\u4e00\u4e2a\u53d6\u6d88\u3002\n\t\t\t\t * \u8fd4\u56detrue\u8868\u793a\u70b9\u51fb\u4e86\uff0c\u786e\u8ba4\uff0c\u8fd4\u56defalse\u8868\u793a\u70b9\u51fb\u53d6\u6d88\n\t\t\t\t *\/\n\t\t\t\treturn confirm(\"\u4f60\u786e\u5b9a\u8981\u5220\u9664\u3010\" + $(this).parent().parent().find(\"td:first\").text() + \"\u3011\uff1f\")\n\n\t\t\t\t\/\/return false\/\/ \u963b\u6b62\u5143\u7d20\u7684\u9ed8\u8ba4\u884c\u4e3a===\u4e0d\u63d0\u4ea4\u8bf7\u6c42\n\t\t\t})\n\n\t\t})\n\t&lt;\/script&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"..\/..\/static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf&lt;\/span&gt;\n\n\t\t\t&lt;%-- \u9759\u6001\u5305\u542b manager \u7ba1\u7406\u6a21\u5757\u7684\u83dc\u5355 --%&gt;\n\t\t\t&lt;%@include file=\"\/pages\/common\/manager_menu.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\n\t&lt;div id=\"main\"&gt;\n\t\t&lt;table&gt;\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;\u540d\u79f0&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u4ef7\u683c&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u4f5c\u8005&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u9500\u91cf&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u5e93\u5b58&lt;\/td&gt;\n\t\t\t\t&lt;td colspan=\"2\"&gt;\u64cd\u4f5c&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\n\t\t\t&lt;c:forEach items=\"${requestScope.page.itmes}\" var=\"book\"&gt;\n\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t&lt;td&gt;${book.name}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.price}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.author}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.sales}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.stock}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;&lt;a href=\"manager\/bookServlet?action=getBook&amp;id=${book.id}&amp;pageNo=${requestScope.page.pageNo}\"&gt;\u4fee\u6539&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;&lt;a class=\"deleteClass\" href=\"manager\/bookServlet?action=delete&amp;id=${book.id}&amp;pageNo=${requestScope.page.pageNo}\"&gt;\u5220\u9664&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t\t&lt;\/tr&gt;\n\t\t\t&lt;\/c:forEach&gt;\n\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;a href=\"pages\/manager\/book_edit.jsp?pageNo=${requestScope.page.pageTotal}\"&gt;\u6dfb\u52a0\u56fe\u4e66&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\t\t&lt;\/table&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\u5206\u9875\u6761 --%&gt;\n\t\t&lt;%@include file=\"\/pages\/common\/page_nav.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p>page_nav.jsp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%--\n  Created by IntelliJ IDEA.\n  User: ZRich\n  Date: 2022\/12\/11\n  Time: \u4e0b\u5348 7:30\n  To change this template use File | Settings | File Templates.\n--%&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n\n&lt;%-- \u5206\u9875\u6761\u7684\u5f00\u59cb --%&gt;\n&lt;div id=\"page_nav\"&gt;\n    &lt;%-- \u5927\u4e8e\u9996\u9875\uff0c\u624d\u663e\u793a --%&gt;\n    &lt;c:if test=\"${requestScope.page.pageNo &gt; 1}\"&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=1\"&gt;\u9996\u9875&lt;\/a&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageNo-1}\"&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;\n    &lt;\/c:if&gt;\n\n    &lt;%-- \u9875\u7801\u8f93\u51fa\u7684\u5f00\u59cb --%&gt;\n    &lt;c:choose&gt;\n\n        &lt;%-- \u60c5\u51b51\uff1a\u5982\u679c\u603b\u9875\u7801\u5c0f\u4e8e\u7b49\u4e8e5\u7684\u60c5\u51b5\uff0c\u9875\u7801\u7684\u8303\u56f4\u662f\uff1a1-\u603b\u9875\u7801 --%&gt;\n        &lt;c:when test=\"${requestScope.page.pageTotal &lt;= 5}\"&gt;\n            &lt;c:set var=\"begin\" value=\"1\" \/&gt;\n            &lt;c:set var=\"end\" value=\"${requestScope.page.pageTotal}\" \/&gt;\n        &lt;\/c:when&gt;\n\n        &lt;%-- \u60c5\u51b52\uff1a\u603b\u9875\u7801\u5927\u4e8e5\u7684\u60c5\u51b5\u3002 --%&gt;\n        &lt;c:when test=\"${requestScope.page.pageTotal &gt; 5}\"&gt;\n\n            &lt;c:choose&gt;\n\n                &lt;%--\u5c0f\u60c5\u51b5 1\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u524d\u9762 3 \u4e2a\uff1a1\uff0c2\uff0c3 \u7684\u60c5\u51b5\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a1-5.--%&gt;\n                &lt;c:when test=\"${requestScope.page.pageNo &lt;= 3}\"&gt;\n                    &lt;c:set var=\"begin\" value=\"1\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"5\" \/&gt;\n                &lt;\/c:when&gt;\n\n                &lt;%-- \u5c0f\u60c5\u51b5 2\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u6700\u540e 3 \u4e2a\uff0c8\uff0c9\uff0c10\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u603b\u9875\u7801\u51cf 4 - \u603b\u9875\u7801 --%&gt;\n                &lt;c:when test=\"${requestScope.page.pageNo &gt;= requestScope.page.pageTotal - 3}\"&gt;\n                    &lt;c:set var=\"begin\" value=\"${requestScope.page.pageTotal - 4}\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"${requestScope.page.pageTotal}\" \/&gt;\n                &lt;\/c:when&gt;\n\n                &lt;%-- \u5c0f\u60c5\u51b5 3\uff1a4\uff0c5\uff0c6\uff0c7\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u5f53\u524d\u9875\u7801\u51cf 2 - \u5f53\u524d\u9875\u7801\u52a0 2 --%&gt;\n                &lt;c:otherwise&gt;\n                    &lt;c:set var=\"begin\" value=\"${requestScope.page.pageNo - 2}\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"${requestScope.page.pageNo + 2}\" \/&gt;\n                &lt;\/c:otherwise&gt;\n\n            &lt;\/c:choose&gt;\n\n        &lt;\/c:when&gt;\n\n    &lt;\/c:choose&gt;\n\n    &lt;c:forEach begin=\"${begin}\" end=\"${end}\" var=\"i\"&gt;\n        &lt;c:if test=\"${i == requestScope.page.pageNo}\"&gt;\n            \u3010${i}\u3011\n        &lt;\/c:if&gt;\n        &lt;c:if test=\"${i != requestScope.page.pageNo}\"&gt;\n            &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${i}\"&gt;${i}&lt;\/a&gt;\n        &lt;\/c:if&gt;\n    &lt;\/c:forEach&gt;\n\n    &lt;%-- \u9875\u7801\u8f93\u51fa\u7684\u7ed3\u675f --%&gt;\n\n    &lt;%-- \u5982\u679c\u5df2\u7ecf \u662f\u6700\u540e\u4e00\u9875\uff0c\u5219\u4e0d\u663e\u793a\u4e0b\u4e00\u9875\uff0c\u672b\u9875 --%&gt;\n    &lt;c:if test=\"${requestScope.page.pageNo &lt; requestScope.page.pageTotal}\"&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageNo+1}\"&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageTotal}\"&gt;\u672b\u9875&lt;\/a&gt;\n    &lt;\/c:if&gt;\n    \u5171${requestScope.page.pageTotal}\u9875\uff0c${requestScope.page.pageTotalCount}\u6761\u8bb0\u5f55\n    \u5230\u7b2c&lt;input value=\"${param.pageNo}\" name=\"pn\" id=\"pn_input\"\/&gt;\u9875\n    &lt;input id=\"searchPageBtn\" type=\"button\" value=\"\u786e\u5b9a\"&gt;\n\n    &lt;script type=\"text\/javascript\"&gt;\n\n        $(function () {\n            \/\/ \u8df3\u5230\u6307\u5b9a\u7684\u9875\u7801\n            $(\"#searchPageBtn\").click(function () {\n\n                var pageNo = $(\"#pn_input\").val();\n\n                var pageTotal = ${requestScope.page.pageTotal};\n\n                if (pageNo &lt; 1) {\n                    pageNo = 1;\n\n                    location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n                    pageNo.val(1)\n                }\n\n                if (pageNo &gt; pageTotal) {\n                    pageNo = pageTotal;\n                    location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n                    pageno.val(pageTotal)\n                }\n\n                \/\/ javaScript\u8bed\u8a00\u4e2d\u63d0\u4f9b\u4e86\u4e00\u4e2aLocation\u5730\u5740\u680f\u5bf9\u8c61\n                \/\/ \u5b83\u6709\u4e00\u4e2a\u5c5e\u6027\u53ebhref. \u5b83\u53ef\u4ee5\u83b7\u53d6\u6d4f\u89c8\u5668\u5730\u5740\u680f\u4e2d\u7684\u5730\u5740\n                \/\/ href\u5c5e\u6027\u53ef\u8bfb\uff0c\u53ef\u5199\n                location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n            })\n\n        })\n\n    &lt;\/script&gt;\n\n&lt;\/div&gt;\n&lt;%-- \u5206\u9875\u6761\u7684\u7ed3\u675f --%&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-204.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"865\" height=\"598\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-204.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2494\"  sizes=\"(max-width: 865px) 100vw, 865px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div id=\"page_nav\"&gt;\n&lt;a href=\"#\"&gt;\u9996\u9875&lt;\/a&gt;\n&lt;a href=\"#\"&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;\n&lt;a href=\"#\"&gt;3&lt;\/a&gt;\n\u3010${ requestScope.page.pageNo }\u3011\n&lt;a href=\"#\"&gt;5&lt;\/a&gt;\n&lt;a href=\"#\"&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;\n&lt;a href=\"#\"&gt;\u672b\u9875&lt;\/a&gt;\n\u5171${ requestScope.page.pageTotal }\u9875\uff0c${ requestScope.page.pageTotalCount }\u6761\u8bb0\u5f55\n\u5230\u7b2c&lt;input value=\"4\" name=\"pn\" id=\"pn_input\"\/&gt;\u9875\n&lt;input type=\"button\" value=\"\u786e\u5b9a\"&gt;&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4)\u9996\u9875\u3001\u4e0a\u4e00\u9875\u3001\u4e0b\u4e00\u9875\u3001\u672b\u9875\u5b9e\u73b0<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div id=\"page_nav\"&gt;\n&lt;%--\u5927\u4e8e\u9996\u9875\uff0c\u624d\u663e\u793a--%&gt;\n&lt;c:if test=\"${requestScope.page.pageNo &gt; 1}\"&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=1\"&gt;\u9996\u9875&lt;\/a&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=${requestScope.page.pageNo-1}\"&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;&lt;\/c:if&gt;\n&lt;a href=\"#\"&gt;3&lt;\/a&gt;\n\u3010${ requestScope.page.pageNo }\u3011\n&lt;a href=\"#\"&gt;5&lt;\/a&gt;\n&lt;%-- \u5982\u679c\u5df2\u7ecf \u662f\u6700\u540e\u4e00\u9875\uff0c\u5219\u4e0d\u663e\u793a\u4e0b\u4e00\u9875\uff0c\u672b\u9875 --%&gt;\n&lt;c:if test=\"${requestScope.page.pageNo &lt; requestScope.page.pageTotal}\"&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=${requestScope.page.pageNo+1}\"&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=${requestScope.page.pageTotal}\"&gt;\u672b\u9875&lt;\/a&gt;&lt;\/c:if&gt;\n\u5171${ requestScope.page.pageTotal }\u9875\uff0c${ requestScope.page.pageTotalCount }\u6761\u8bb0\u5f55\n\u5230\u7b2c&lt;input value=\"4\" name=\"pn\" id=\"pn_input\"\/&gt;\u9875\n&lt;input type=\"button\" value=\"\u786e\u5b9a\"&gt;&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5)\u5206\u9875\u6a21\u5757\u4e2d\u8df3\u8f6c\u5230\u6307\u5b9a\u9875\u6570\u529f\u80fd\u5b9e\u73b0<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div id=\"page_nav\"&gt;\n&lt;%--\u5927\u4e8e\u9996\u9875\uff0c\u624d\u663e\u793a--%&gt;\n&lt;c:if test=\"${requestScope.page.pageNo &gt; 1}\"&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=1\"&gt;\u9996\u9875&lt;\/a&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=${requestScope.page.pageNo-1}\"&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;&lt;\/c:if&gt;\n&lt;a href=\"#\"&gt;3&lt;\/a&gt;\n\u3010${ requestScope.page.pageNo }\u3011\n&lt;a href=\"#\"&gt;5&lt;\/a&gt;\n&lt;%-- \u5982\u679c\u5df2\u7ecf \u662f\u6700\u540e\u4e00\u9875\uff0c\u5219\u4e0d\u663e\u793a\u4e0b\u4e00\u9875\uff0c\u672b\u9875 --%&gt;\n&lt;c:if test=\"${requestScope.page.pageNo &lt; requestScope.page.pageTotal}\"&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=${requestScope.page.pageNo+1}\"&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;\n&lt;a href=\"manager\/bookServlet?action=page&amp;pageNo=${requestScope.page.pageTotal}\"&gt;\u672b\u9875&lt;\/a&gt;&lt;\/c:if&gt;\n\u5171${ requestScope.page.pageTotal }\u9875\uff0c${ requestScope.page.pageTotalCount }\u6761\u8bb0\u5f55\n\u5230\u7b2c&lt;input value=\"${param.pageNo}\" name=\"pn\" id=\"pn_input\"\/&gt;\u9875\n&lt;input id=\"searchPageBtn\" type=\"button\" value=\"\u786e\u5b9a\"&gt;\n&lt;script type=\"text\/javascript\"&gt;\n$(function () {\n\/\/ \u8df3\u5230\u6307\u5b9a\u7684\u9875\u7801\n$(\"#searchPageBtn\").click(function () {\nvar pageNo = $(\"#pn_input\").val();\n&lt;%--var pageTotal = ${requestScope.page.pageTotal};--%&gt;\n&lt;%--alert(pageTotal);--%&gt;\n\/\/ javaScript \u8bed\u8a00\u4e2d\u63d0\u4f9b\u4e86\u4e00\u4e2a location \u5730\u5740\u680f\u5bf9\u8c61\n\/\/ \u5b83\u6709\u4e00\u4e2a\u5c5e\u6027\u53eb href.\u5b83\u53ef\u4ee5\u83b7\u53d6\u6d4f\u89c8\u5668\u5730\u5740\u680f\u4e2d\u7684\u5730\u5740\n\/\/ href \u5c5e\u6027\u53ef\u8bfb\uff0c\u53ef\u5199\nlocation.href = \"${pageScope.basePath}manager\/bookServlet?action=page&amp;pageNo=\" +\npageNo;\n});\n});\n&lt;\/script&gt;\n&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<p>Page \u5bf9\u8c61\u4e2d\u7684\u4fee\u6539\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void setPageNo(Integer pageNo) {\n\/* \u6570\u636e\u8fb9\u754c\u7684\u6709\u6548\u68c0\u67e5 *\/\nif (pageNo &lt; 1) {\npageNo = 1;\n}\nif (pageNo &gt; pageTotal) {\npageNo = pageTotal;\n}\nthis.pageNo = pageNo;\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-205.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"731\" height=\"264\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-205.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2495\"  sizes=\"(max-width: 731px) 100vw, 731px\" \/><\/div><\/figure>\n\n\n\n<p>BookService \u4e2d page \u65b9\u6cd5\u7684\u4fee\u6539\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Override\n    public Page&lt;Book&gt; page(int pageNo, int pageSize) {\n        Page&lt;Book&gt; page = new Page&lt;Book&gt;();\n\n        \/\/ \u8bbe\u7f6e\u6bcf\u9875\u663e\u793a\u7684\u6570\u91cf\n        page.setPageSize(pageSize);\n\n        \/\/ \u6c42\u603b\u8bb0\u5f55\u6570\n        Integer pageTotalCount = bookDao.queryForPageTotalCount();\n        \/\/ \u8bbe\u7f6e\u603b\u8bb0\u5f55\u6570\n        page.setPageTotalCount(pageTotalCount);\n\n        \/\/ \u6c42\u603b\u9875\u7801\n        Integer pageTotal = pageTotalCount \/ pageSize;\n        if (pageTotalCount % pageSize &gt; 0){\n            pageTotal += 1;\n        }\n        \/\/ \u8bbe\u7f6e\u603b\u9875\u7801\n        page.setPageTotal(pageTotal);\n\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u7801\n        page.setPageNo(pageNo);\n\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\u7684\u5f00\u59cb\u7d22\u5f15\n        int begin = (page.getPageNo() - 1) * pageSize;\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\n        List&lt;Book&gt; items = bookDao.queryForPageItems(begin,pageSize);\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u6570\u636e\n        page.setItmes(items);\n\n        return page;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6)\u5206\u9875\u6a21\u5757\u4e2d\uff0c\u9875\u7801 1,2,\u30103\u3011,4,5 \u7684\u663e\u793a\uff0c\u8981\u663e\u793a 5 \u4e2a\u9875\u7801\uff0c\u5e76\u4e14\u9875\u7801\u53ef\u4ee5\u70b9\u51fb\u8df3\u8f6c\u3002<\/h3>\n\n\n\n<p>\u9700\u6c42\uff1a\u663e\u793a 5 \u4e2a\u8fde\u7eed\u7684\u9875\u7801\uff0c\u800c\u4e14\u5f53\u524d\u9875\u7801\u5728\u4e2d\u95f4\u3002\u9664\u4e86\u5f53\u524d\u9875\u7801\u4e4b\u5916\uff0c\u6bcf\u4e2a\u9875\u7801\u90fd\u53ef\u4ee5\u70b9\u51fb\u8df3\u5230\u6307\u5b9a\u9875\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u60c5\u51b5 1\uff1a\u5982\u679c\u603b\u9875\u7801\u5c0f\u4e8e\u7b49\u4e8e 5 \u7684\u60c5\u51b5\uff0c\u9875\u7801\u7684\u8303\u56f4\u662f\uff1a1-\u603b\u9875\u7801<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>1 \u9875 1\n2 \u9875 1\uff0c2\n3 \u9875 1\uff0c2\uff0c3\n4 \u9875 1\uff0c2\uff0c3\uff0c4\n5 \u9875 1\uff0c2\uff0c3\uff0c4\uff0c5<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u60c5\u51b5 2\uff1a\u603b\u9875\u7801\u5927\u4e8e 5 \u7684\u60c5\u51b5\u3002\u5047\u8bbe\u4e00\u5171 10 \u9875<\/h4>\n\n\n\n<p>\u5c0f\u60c5\u51b5 1\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u524d\u9762 3 \u4e2a\uff1a1\uff0c2\uff0c3 \u7684\u60c5\u51b5\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a1-5.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u30101\u30112\uff0c3\uff0c4\uff0c5\n1\u30102\u30113\uff0c4\uff0c5\n1\uff0c2\u30103\u30114\uff0c5<\/code><\/pre>\n\n\n\n<p>\u5c0f\u60c5\u51b5 2\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u6700\u540e 3 \u4e2a\uff0c8\uff0c9\uff0c10\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u603b\u9875\u7801\u51cf 4 &#8211; \u603b\u9875\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>6\uff0c7\u30108\u30119\uff0c10\n6\uff0c7\uff0c8\u30109\u301110\n6\uff0c7\uff0c8\uff0c9\u301010\u3011<\/code><\/pre>\n\n\n\n<p>\u5c0f\u60c5\u51b5 3\uff1a4\uff0c5\uff0c6\uff0c7\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u5f53\u524d\u9875\u7801\u51cf 2 &#8211; \u5f53\u524d\u9875\u7801\u52a0 2<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2\uff0c3\uff0c4\uff0c5\uff0c6\n3\uff0c4\uff0c5\uff0c6\uff0c7\n4\uff0c5\uff0c6\uff0c7\uff0c8\n5\uff0c6\uff0c7\uff0c8\uff0c9<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%--\n  Created by IntelliJ IDEA.\n  User: ZRich\n  Date: 2022\/12\/11\n  Time: \u4e0b\u5348 7:30\n  To change this template use File | Settings | File Templates.\n--%&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n\n&lt;%-- \u5206\u9875\u6761\u7684\u5f00\u59cb --%&gt;\n&lt;div id=\"page_nav\"&gt;\n    &lt;%-- \u5927\u4e8e\u9996\u9875\uff0c\u624d\u663e\u793a --%&gt;\n    &lt;c:if test=\"${requestScope.page.pageNo &gt; 1}\"&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=1\"&gt;\u9996\u9875&lt;\/a&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageNo-1}\"&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;\n    &lt;\/c:if&gt;\n\n    &lt;%-- \u9875\u7801\u8f93\u51fa\u7684\u5f00\u59cb --%&gt;\n    &lt;c:choose&gt;\n\n        &lt;%-- \u60c5\u51b51\uff1a\u5982\u679c\u603b\u9875\u7801\u5c0f\u4e8e\u7b49\u4e8e5\u7684\u60c5\u51b5\uff0c\u9875\u7801\u7684\u8303\u56f4\u662f\uff1a1-\u603b\u9875\u7801 --%&gt;\n        &lt;c:when test=\"${requestScope.page.pageTotal &lt;= 5}\"&gt;\n            &lt;c:set var=\"begin\" value=\"1\" \/&gt;\n            &lt;c:set var=\"end\" value=\"${requestScope.page.pageTotal}\" \/&gt;\n        &lt;\/c:when&gt;\n\n        &lt;%-- \u60c5\u51b52\uff1a\u603b\u9875\u7801\u5927\u4e8e5\u7684\u60c5\u51b5\u3002 --%&gt;\n        &lt;c:when test=\"${requestScope.page.pageTotal &gt; 5}\"&gt;\n\n            &lt;c:choose&gt;\n\n                &lt;%--\u5c0f\u60c5\u51b5 1\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u524d\u9762 3 \u4e2a\uff1a1\uff0c2\uff0c3 \u7684\u60c5\u51b5\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a1-5.--%&gt;\n                &lt;c:when test=\"${requestScope.page.pageNo &lt;= 3}\"&gt;\n                    &lt;c:set var=\"begin\" value=\"1\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"5\" \/&gt;\n                &lt;\/c:when&gt;\n\n                &lt;%-- \u5c0f\u60c5\u51b5 2\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u6700\u540e 3 \u4e2a\uff0c8\uff0c9\uff0c10\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u603b\u9875\u7801\u51cf 4 - \u603b\u9875\u7801 --%&gt;\n                &lt;c:when test=\"${requestScope.page.pageNo &gt;= requestScope.page.pageTotal - 3}\"&gt;\n                    &lt;c:set var=\"begin\" value=\"${requestScope.page.pageTotal - 4}\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"${requestScope.page.pageTotal}\" \/&gt;\n                &lt;\/c:when&gt;\n\n                &lt;%-- \u5c0f\u60c5\u51b5 3\uff1a4\uff0c5\uff0c6\uff0c7\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u5f53\u524d\u9875\u7801\u51cf 2 - \u5f53\u524d\u9875\u7801\u52a0 2 --%&gt;\n                &lt;c:otherwise&gt;\n                    &lt;c:set var=\"begin\" value=\"${requestScope.page.pageNo - 2}\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"${requestScope.page.pageNo + 2}\" \/&gt;\n                &lt;\/c:otherwise&gt;\n\n            &lt;\/c:choose&gt;\n\n        &lt;\/c:when&gt;\n\n    &lt;\/c:choose&gt;\n\n    &lt;c:forEach begin=\"${begin}\" end=\"${end}\" var=\"i\"&gt;\n        &lt;c:if test=\"${i == requestScope.page.pageNo}\"&gt;\n            \u3010${i}\u3011\n        &lt;\/c:if&gt;\n        &lt;c:if test=\"${i != requestScope.page.pageNo}\"&gt;\n            &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${i}\"&gt;${i}&lt;\/a&gt;\n        &lt;\/c:if&gt;\n    &lt;\/c:forEach&gt;\n\n    &lt;%-- \u9875\u7801\u8f93\u51fa\u7684\u7ed3\u675f --%&gt;\n\n    &lt;%-- \u5982\u679c\u5df2\u7ecf \u662f\u6700\u540e\u4e00\u9875\uff0c\u5219\u4e0d\u663e\u793a\u4e0b\u4e00\u9875\uff0c\u672b\u9875 --%&gt;\n    &lt;c:if test=\"${requestScope.page.pageNo &lt; requestScope.page.pageTotal}\"&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageNo+1}\"&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageTotal}\"&gt;\u672b\u9875&lt;\/a&gt;\n    &lt;\/c:if&gt;\n    \u5171${requestScope.page.pageTotal}\u9875\uff0c${requestScope.page.pageTotalCount}\u6761\u8bb0\u5f55\n    \u5230\u7b2c&lt;input value=\"${param.pageNo}\" name=\"pn\" id=\"pn_input\"\/&gt;\u9875\n    &lt;input id=\"searchPageBtn\" type=\"button\" value=\"\u786e\u5b9a\"&gt;\n\n    &lt;script type=\"text\/javascript\"&gt;\n\n        $(function () {\n            \/\/ \u8df3\u5230\u6307\u5b9a\u7684\u9875\u7801\n            $(\"#searchPageBtn\").click(function () {\n\n                var pageNo = $(\"#pn_input\").val();\n\n                var pageTotal = ${requestScope.page.pageTotal};\n\n                if (pageNo &lt; 1) {\n                    pageNo = 1;\n\n                    location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n                    pageNo.val(1)\n                }\n\n                if (pageNo &gt; pageTotal) {\n                    pageNo = pageTotal;\n                    location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n                    pageno.val(pageTotal)\n                }\n\n                \/\/ javaScript\u8bed\u8a00\u4e2d\u63d0\u4f9b\u4e86\u4e00\u4e2aLocation\u5730\u5740\u680f\u5bf9\u8c61\n                \/\/ \u5b83\u6709\u4e00\u4e2a\u5c5e\u6027\u53ebhref. \u5b83\u53ef\u4ee5\u83b7\u53d6\u6d4f\u89c8\u5668\u5730\u5740\u680f\u4e2d\u7684\u5730\u5740\n                \/\/ href\u5c5e\u6027\u53ef\u8bfb\uff0c\u53ef\u5199\n                location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n            })\n\n        })\n\n    &lt;\/script&gt;\n\n&lt;\/div&gt;\n&lt;%-- \u5206\u9875\u6761\u7684\u7ed3\u675f --%&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-206.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"562\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-206.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2496\"  sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-207.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"499\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-207.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2497\"  sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">7) \u4fee\u6539\u5206\u9875\u540e\uff0c\u589e\u52a0\uff0c\u5220\u9664\uff0c\u4fee\u6539\u56fe\u4e66\u4fe1\u606f\u7684\u56de\u663e\u9875\u9762<\/h3>\n\n\n\n<p>\u4ee5\u4fee\u6539\u56fe\u4e66\u4e3a\u793a\u4f8b\uff1a<\/p>\n\n\n\n<p>1\u3001\u5728\u4fee\u6539\u7684\u8bf7\u6c42\u5730\u5740\u4e0a\u8ffd\u52a0\u5f53\u524d\u9875\u7801\u53c2\u6570\uff1a<\/p>\n\n\n\n<p>book_manager.jsp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u56fe\u4e66\u7ba1\u7406&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\t&lt;script type=\"text\/javascript\"&gt;\n\t\t$(function () {\n\t\t\t\/\/ \u7ed9\u5220\u9664\u7684a\u6807\u7b7e\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\uff0c\u7528\u4e8e\u5220\u9664\u7684\u786e\u8ba4\u63d0\u793a\u64cd\u4f5c\n\t\t\t$(\"a.deleteClass\").click(function () {\n\t\t\t\t\/\/\u5728\u4e8b\u4ef6\u7684function\u51fd\u6570\u4e2d\uff0c\u6709\u4e00\u4e2athis\u5bf9\u8c61\u3002\u8fd9\u4e2athis\u5bf9\u8c61\uff0c\u662f\u5f53\u524d\u6b63\u5728\u54cd\u5e94\u4e8b\u4ef6\u7684dom\u5bf9\u8c61\u3002\n\n\t\t\t\t\/**\n\t\t\t\t * confirm\u662f\u786e\u8ba4\u63d0\u793a\u6846\u51fd\u6570\n\t\t\t\t * \u53c2\u6570\u662f\u5b83\u7684\u63d0\u793a\u5185\u5bb9\n\t\t\t\t * \u5b83\u6709\u4e24\u4e2a\u6309\u94ae\uff0c\u4e00\u4e2a\u786e\u8ba4\uff0c\u4e00\u4e2a\u53d6\u6d88\u3002\n\t\t\t\t * \u8fd4\u56detrue\u8868\u793a\u70b9\u51fb\u4e86\uff0c\u786e\u8ba4\uff0c\u8fd4\u56defalse\u8868\u793a\u70b9\u51fb\u53d6\u6d88\n\t\t\t\t *\/\n\t\t\t\treturn confirm(\"\u4f60\u786e\u5b9a\u8981\u5220\u9664\u3010\" + $(this).parent().parent().find(\"td:first\").text() + \"\u3011\uff1f\")\n\n\t\t\t\t\/\/return false\/\/ \u963b\u6b62\u5143\u7d20\u7684\u9ed8\u8ba4\u884c\u4e3a===\u4e0d\u63d0\u4ea4\u8bf7\u6c42\n\t\t\t})\n\n\t\t})\n\t&lt;\/script&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"..\/..\/static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf&lt;\/span&gt;\n\n\t\t\t&lt;%-- \u9759\u6001\u5305\u542b manager \u7ba1\u7406\u6a21\u5757\u7684\u83dc\u5355 --%&gt;\n\t\t\t&lt;%@include file=\"\/pages\/common\/manager_menu.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\n\t&lt;div id=\"main\"&gt;\n\t\t&lt;table&gt;\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;\u540d\u79f0&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u4ef7\u683c&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u4f5c\u8005&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u9500\u91cf&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u5e93\u5b58&lt;\/td&gt;\n\t\t\t\t&lt;td colspan=\"2\"&gt;\u64cd\u4f5c&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\n\t\t\t&lt;c:forEach items=\"${requestScope.page.itmes}\" var=\"book\"&gt;\n\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t&lt;td&gt;${book.name}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.price}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.author}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.sales}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;${book.stock}&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;&lt;a href=\"manager\/bookServlet?action=getBook&amp;id=${book.id}&amp;pageNo=${requestScope.page.pageNo}\"&gt;\u4fee\u6539&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t\t\t&lt;td&gt;&lt;a class=\"deleteClass\" href=\"manager\/bookServlet?action=delete&amp;id=${book.id}&amp;pageNo=${requestScope.page.pageNo}\"&gt;\u5220\u9664&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t\t&lt;\/tr&gt;\n\t\t\t&lt;\/c:forEach&gt;\n\t\t\t\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;&lt;a href=\"pages\/manager\/book_edit.jsp?pageNo=${requestScope.page.pageTotal}\"&gt;\u6dfb\u52a0\u56fe\u4e66&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\t\t&lt;\/table&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\u5206\u9875\u6761 --%&gt;\n\t\t&lt;%@include file=\"\/pages\/common\/page_nav.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-208-1024x34.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"34\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-208-1024x34.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2498\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>2\u3001\u5728 book_edit.jsp \u9875\u9762\u4e2d\u4f7f\u7528\u9690\u85cf\u57df\u8bb0\u5f55\u4e0b pageNo \u53c2\u6570<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u7f16\u8f91\u56fe\u4e66&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\n\t&lt;style type=\"text\/css\"&gt;\n\th1 {\n\t\ttext-align: center;\n\t\tmargin-top: 200px;\n\t}\n\t\n\th1 a {\n\t\tcolor:red;\n\t}\n\t\n\tinput {\n\t\ttext-align: center;\n\t}\n&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;!--\n\t\u9047\u5230\u7684\u95ee\u9898\uff1a\n\tbook_edit.jsp\u9875\u9762\uff0c\u65e2\u8981\u505a\u6dfb\u52a0\u64cd\u4f5c\u3002\u53c8\u8981\u505a\u4fee\u6539\u64cd\u4f5c\uff0c\u800c\u5230\u5e95\u662f\u6dfb\u52a0\uff0c\u8fd8\u662f\u4fee\u6539\u662f\u7531\u4e00\u4e2a\u9690\u85cf\u57df\u6765\u51b3\u5b9a\u7684\u3002\n\t\u5982\u4f55\u52a8\u6001\u4fee\u6539\u9690\u85cf\u57df&lt;input type=\"hidden\" name=\"action\" value=\"xxx\" \/&gt; \u8ba9\u5b83\u7684\u503c\u65e2\u53ef\u4ee5\u5b9e\u73b0\u6dfb\u52a0\uff0c\u53c8\u53ef\u4ee5\u5b9e\u73b0\u4fee\u6539\u64cd\u4f5c\uff1f\n\n\t\/\/\u65b9\u6848\u4e00\uff1a\n\t\u53ef\u4ee5\u5f53\u8bf7\u6c42\u53d1\u8d77\u65f6\uff0c\u9644\u5e26\u4e0a\u5f53\u524d\u8981\u64cd\u4f5c\u7684\u503c\u3002\u5e76\u6ce8\u5165\u5230\u9690\u85cf\u57df\u4e2d\u3002\n\n\t\/\/\u65b9\u6848\u4e8c\uff1a\n\t\u53ef\u4ee5\u901a\u8fc7\u5224\u65ad\u5f53\u524d\u8bf7\u6c42\u53c2\u6570\u4e2d\u662f\u5426\u5305\u542b\u6709id\u53c2\u6570\u3002\u5982\u679c\u6709\u8bf4\u660e\u662f\u4fee\u6539\u64cd\u4f5c\u3002\u5982\u679c\u6ca1\u6709\u8bf4\u660e\u662f\u6dfb\u52a0\u64cd\u4f5c\u3002\n\t\u662f\u5426\u662f\u6dfb\u52a0\u64cd\u4f5c\uff1a\n&lt;%--\t${ empty param.id ? \"add\" : \"update\"}--%&gt;\n\n\t\/\/\u65b9\u6848\u4e09\uff1a\n\t\u53ef\u4ee5\u901a\u8fc7\u5224\u65ad\uff0cRequest\u57df\u4e2d\u662f\u5426\u5305\u542b\u6709\u4fee\u6539\u7684\u56fe\u4e66\u4fe1\u606f\u5bf9\u8c61\uff0c\u5982\u679c\u6ca1\u6709\u8bf4\u660e\u662f\u6dfb\u52a0\u64cd\u4f5c\u3002\u5982\u679c\u6709\u8bf4\u660e\u662f\u4fee\u6539\u64cd\u4f5c\u3002\n\t\u662f\u5426\u662f\u6dfb\u52a0\u64cd\u4f5c\uff1a\n&lt;%--\t${ empty requestScope.book ? \"add\" : \"update\"}--%&gt;\n--&gt;\n\n\t\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"..\/..\/static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u7f16\u8f91\u56fe\u4e66&lt;\/span&gt;\n\n\t\t\t&lt;%-- \u9759\u6001\u5305\u542b manager \u7ba1\u7406\u6a21\u5757\u7684\u83dc\u5355 --%&gt;\n\t\t\t&lt;%@include file=\"\/pages\/common\/manager_menu.jsp\"%&gt;\n\n\t\t&lt;\/div&gt;\n\t\t\n\t\t&lt;div id=\"main\"&gt;\n\t\t\t&lt;form action=\"manager\/bookServlet\" method=\"get\"&gt;\n\t\t\t\t&lt;input type=\"hidden\" name=\"pageNo\" value=\"${param.pageNo}\"&gt;\n\t\t\t\t&lt;input type=\"hidden\" name=\"action\" value=\"${ empty param.id ? \"add\" : \"update\"}\" \/&gt;\n\t\t\t\t&lt;input type=\"hidden\" name=\"id\" value=\"${requestScope.book.id}\" \/&gt;\n\t\t\t\t&lt;table&gt;\n\t\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t\t&lt;td&gt;\u540d\u79f0&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;\u4ef7\u683c&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;\u4f5c\u8005&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;\u9500\u91cf&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;\u5e93\u5b58&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td colspan=\"2\"&gt;\u64cd\u4f5c&lt;\/td&gt;\n\t\t\t\t\t&lt;\/tr&gt;\t\t\n\t\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;input name=\"name\" type=\"text\" value=\"${requestScope.book.name}\"\/&gt;&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;input name=\"price\" type=\"text\" value=\"${requestScope.book.price}\"\/&gt;&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;input name=\"author\" type=\"text\" value=\"${requestScope.book.author}\"\/&gt;&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;input name=\"sales\" type=\"text\" value=\"${requestScope.book.sales}\"\/&gt;&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;input name=\"stock\" type=\"text\" value=\"${requestScope.book.stock}\"\/&gt;&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;input type=\"submit\" value=\"\u63d0\u4ea4\"\/&gt;&lt;\/td&gt;\n\t\t\t\t\t&lt;\/tr&gt;\t\n\t\t\t\t&lt;\/table&gt;\n\t\t\t&lt;\/form&gt;\n\t\t\t\n\t\n\t\t&lt;\/div&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-209.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"875\" height=\"136\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-209.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2499\"  sizes=\"(max-width: 875px) 100vw, 875px\" \/><\/div><\/figure>\n\n\n\n<p>3\u3001\u5728\u670d\u52a1\u5668\u91cd\u5b9a\u5411\u7684\u65f6\u5019\uff0c\u83b7\u53d6\u5f53\u524d\u9875\u7801\u8ffd\u52a0\u4e0a\u8fdb\u884c\u8df3\u8f6c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Page;\nimport top.qaqaq.service.BookService;\nimport top.qaqaq.service.impl.BookServiceImpl;\nimport top.qaqaq.utils.WebUtils;\n\nimport java.io.IOException;\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-10 \u4e0b\u5348 7:51\n *\/\npublic class BookServlet extends BaseServlet {\n\n    private BookService bookService = new BookServiceImpl();\n\n    \/**\n     * \u5904\u7406\u5206\u9875\u529f\u80fd\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 pageNo \u548c pageSize\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),1);\n\n        int pageSize = WebUtils.parseInt(req.getParameter(\"pageSize\"), Page.PAGE_SIZE);\n        \/\/ 2. \u8c03\u7528BookService.page(pageNo,PageSize)\uff1aPage\u5bf9\u8c61\n        Page&lt;Book&gt; page = bookService.page(pageNo,pageSize);\n\n        page.setUrl(\"manager\/bookServlet?action=page\");\n        \n        \/\/ 3. \u4fdd\u5b58Page\u5bf9\u8c61\u5230Request\u57df\u4e2d\n        req.setAttribute(\"page\",page);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/manager\/book_manager.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/manager\/book_manager.jsp\").forward(req,resp);\n\n    }\n\n    \/**\n     * \u8d1f\u8d23\u6dfb\u52a0\u56fe\u4e66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),0);\n        pageNo += 1;\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570==\u5c01\u88c5\u6210\u4e3aBook\u5bf9\u8c61\n        Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());\n        \/\/ 2. \u8c03\u7528BookService.addBook()\u4fdd\u5b58\u56fe\u4e66\n        bookService.addBook(book);\n        \/\/ 3. \u8df3\u5230\u56fe\u4e66\u5217\u8868\u9875\u9762\n        \/\/      \/manager\/bookServlet?action=list\n\n        \/\/ \u5982\u679c\u4f7f\u7528\u8bf7\u6c42\u8f6c\u53d1\uff0c\u5219\u4e3a\u4e00\u6b21\u8bf7\u6c42\uff0c\u5237\u65b0\u4f1a\u91cd\u590d\u63d0\u4ea4\u6570\u636e\n\/\/        req.getRequestDispatcher(\"\/manager\/bookServlet?action=list\").forward(req,resp);\n        \/\/ \u6240\u4ee5\u4f7f\u7528\u8bf7\u6c42\u91cd\u5b9a\u5411\n        resp.sendRedirect(req.getContextPath() + \"\/manager\/bookServlet?action=page&amp;pageNo=\" + pageNo);\n\n    }\n\n    \/**\n     * \u8d1f\u8d23\u5220\u9664\u56fe\u4e66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570id\uff0c\u56fe\u4e66\u7f16\u7a0b\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n\n        \/\/ 2. \u8c03\u7528bookService.deleteBookById();\u5220\u9664\u56fe\u4e66\n        bookService.deleteBookById(id);\n        \/\/ 3. \u91cd\u5b9a\u5411\u56de\u56fe\u4e66\u5217\u8868\u7ba1\u7406\u9875\u9762\n        \/\/      \/book\/manager\/bookServlet?action=list\n        resp.sendRedirect(req.getContextPath() + \"\/manager\/bookServlet?action=page&amp;pageNo=\" + req.getParameter(\"pageNo\"));\n    }\n\n    \/**\n     * \u4fdd\u5b58\u4fee\u6539\u56fe\u4e66\u7684\u64cd\u4f5c\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570==\u5c01\u88c5\u6210\u4e3aBook\u5bf9\u8c61\n        Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());\n        \/\/ 2. \u8c03\u7528BookService.updateBook( book );\u4fee\u6539\u56fe\u4e66\n        bookService.updateBook(book);\n        \/\/ 3. \u91cd\u5b9a\u5411\u56de\u56fe\u4e66\u5217\u8868\u7ba1\u7406\u9875\u9762\n        \/\/      \u5730\u5740\uff1a\/\u5de5\u7a0b\u540d\/manager\/bookServlet?action=list\n        resp.sendRedirect(req.getContextPath() + \"\/manager\/bookServlet?action=page&amp;pageNo=\" + req.getParameter(\"pageNo\"));\n\n    }\n\n    \/**\n     * \u83b7\u53d6\u8981\u4fee\u6539\u7684\u56fe\u4e66\u4fe1\u606f\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void getBook(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570\u56fe\u4e66\u7f16\u53f7\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        \/\/ 2. \u8c03\u7528bookService.queryBookById\u67e5\u8be2\u56fe\u4e66\n        Book book = bookService.queryBookById(id);\n        \/\/ 3. \u4fdd\u5b58\u56fe\u4e66\u5230Request\u57df\u4e2d\n        req.setAttribute(\"book\",book);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\u3002pages\/manager\/book_edit.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/manager\/book_edit.jsp\").forward(req,resp);\n    }\n\n    \/**\n     * \u8d1f\u8d23\u904d\u5386\u56fe\u4e66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1. \u901a\u8fc7BookService\u67e5\u8be2\u5168\u90e8\u56fe\u4e66\n        List&lt;Book&gt; books = bookService.queryBooks();\n        \/\/ 2. \u628a\u5168\u90e8\u56fe\u4e66\u4fdd\u5b58\u5230Request\u57df\u4e2d\n        req.setAttribute(\"books\", books);\n        \/\/ 3. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/manager\/book_manager.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/manager\/book_manager.jsp\").forward(req,resp);\n\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-210-1024x354.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"354\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-210-1024x354.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2500\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3\u3001\u9996\u9875 index.jsp \u7684\u8df3\u8f6c<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-211-1024x395.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"395\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-211-1024x395.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2501\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>index.jsp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;%-- \u53ea\u8d1f\u8d23\u8bf7\u6c42\u8f6c\u53d1 --%&gt;\n&lt;jsp:forward page=\"\/client\/bookServlet?action=page\"&gt;&lt;\/jsp:forward&gt;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Page;\nimport top.qaqaq.service.BookService;\nimport top.qaqaq.service.impl.BookServiceImpl;\nimport top.qaqaq.utils.WebUtils;\n\nimport java.io.IOException;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-11 \u4e0b\u5348 6:48\n *\/\npublic class ClientBookServlet extends BaseServlet{\n\n    private BookService bookService = new BookServiceImpl();\n\n    \/**\n     * \u5904\u7406\u5206\u9875\u529f\u80fd\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 pageNo \u548c pageSize\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),1);\n\n        int pageSize = WebUtils.parseInt(req.getParameter(\"pageSize\"), Page.PAGE_SIZE);\n        \/\/ 2. \u8c03\u7528BookService.page(pageNo,PageSize)\uff1aPage\u5bf9\u8c61\n        Page&lt;Book&gt; page = bookService.page(pageNo,pageSize);\n\n        page.setUrl(\"client\/bookServlet?action=page\");\n\n        \/\/ 3. \u4fdd\u5b58Page\u5bf9\u8c61\u5230Request\u57df\u4e2d\n        req.setAttribute(\"page\",page);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/client\/index.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/client\/index.jsp\").forward(req,resp);\n\n    }\n\n    \/**\n     * \u5904\u7406\u6309\u4ef7\u683c\u67e5\u627e \u5206\u9875\u529f\u80fd\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 pageNo \u548c pageSize\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),1);\n\n        int pageSize = WebUtils.parseInt(req.getParameter(\"pageSize\"), Page.PAGE_SIZE);\n\n        int min = WebUtils.parseInt(req.getParameter(\"min\"),0);\n        int max = WebUtils.parseInt(req.getParameter(\"max\"), Integer.MAX_VALUE);\n\n        \/\/ 2. \u8c03\u7528BookService.page(pageNo,PageSize)\uff1aPage\u5bf9\u8c61\n        Page&lt;Book&gt; page = bookService.pageByPrice(pageNo,pageSize,min,max);\n\n        StringBuilder sb = new StringBuilder(\"client\/bookServlet?action=pageByPrice\");\n\n        \/\/ \u5982\u679c\u6709\u6700\u5c0f\u4ef7\u683c\u7684\u53c2\u6570\uff0c\u8ffd\u52a0\u5230\u5206\u9875\u6761\u7684\u5730\u5740\u53c2\u6570\u4e2d\n        if (req.getParameter(\"min\") != null) {\n            sb.append(\"&amp;min=\").append(req.getParameter(\"min\"));\n        }\n        \/\/ \u5982\u679c\u6709\u6700\u5927\u4ef7\u683c\u7684\u53c2\u6570\uff0c\u8ffd\u52a0\u5230\u5206\u9875\u6761\u7684\u5730\u5740\u53c2\u6570\u4e2d\n        if (req.getParameter(\"max\") != null) {\n            sb.append(\"&amp;max=\").append(req.getParameter(\"max\"));\n        }\n\n        page.setUrl(sb.toString());\n\n        \/\/ 3. \u4fdd\u5b58Page\u5bf9\u8c61\u5230Request\u57df\u4e2d\n        req.setAttribute(\"page\",page);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/client\/index.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/client\/index.jsp\").forward(req,resp);\n\n    }\n\n\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-212-1024x472.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-212-1024x472.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2502\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4\u3001\u5206\u9875\u6761\u7684\u62bd\u53d6<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">4.1\u3001\u62bd\u53d6\u5206\u9875\u6761\u4e2d\u8bf7\u6c42\u5730\u5740\u4e3a url \u53d8\u91cf<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">4.1.1.\u5728 page \u5bf9\u8c61\u4e2d\u6dfb\u52a0 url \u5c5e\u6027<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-11 \u4e0b\u5348 1:14\n *\/\n\n\/**\n * Page\u662f\u5206\u9875\u7684\u6a21\u578b\u5bf9\u8c61\n * @param &lt;T&gt;   \u662f\u5177\u4f53\u7684\u6a21\u5757\u7684javaBean\u7c7b\n *\/\npublic class Page &lt;T&gt; {\n\n    public static final Integer PAGE_SIZE = 4;\n\n    \/\/ \u5f53\u524d\u9875\u7801\n    private Integer pageNo;\n    \/\/ \u603b\u9875\u7801\n    private Integer pageTotal;\n    \/\/ \u5f53\u524d\u9875\u663e\u793a\u6570\u91cf\n    private Integer pageSize = PAGE_SIZE;\n    \/\/ \u603b\u8bb0\u5f55\u6570\n    private Integer pageTotalCount;\n    \/\/ \u5f53\u524d\u9875\u6570\u636e\n    private List&lt;T&gt; itmes;\n    \/\/ \u5206\u9875\u6761\u7684\u8bf7\u6c42\u5730\u5740\n    private String url;\n\n    public Page() {\n    }\n\n    public Page(Integer pageNo, Integer pageTotal, Integer pageSize, Integer pageTotalCount, List&lt;T&gt; itmes, String url) {\n\n        \/* \u6570\u636e\u8fb9\u754c\u7684\u6709\u6548\u68c0\u67e5 *\/\n        if (pageNo &lt; 1) {\n            pageNo = 1;\n        }\n        if (pageNo &gt; pageTotal) {\n            pageNo = pageTotal;\n        }\n\n        this.pageNo = pageNo;\n        this.pageTotal = pageTotal;\n        this.pageSize = pageSize;\n        this.pageTotalCount = pageTotalCount;\n        this.itmes = itmes;\n        this.url = url;\n    }\n\n    public Integer getPageNo() {\n        return pageNo;\n    }\n\n    public void setPageNo(Integer pageNo) {\n\n        \/* \u6570\u636e\u8fb9\u754c\u7684\u6709\u6548\u68c0\u67e5 *\/\n        if (pageNo &lt; 1) {\n            pageNo = 1;\n        }\n        if (pageNo &gt; pageTotal) {\n            pageNo = pageTotal;\n        }\n\n        this.pageNo = pageNo;\n    }\n\n    public Integer getPageTotal() {\n        return pageTotal;\n    }\n\n    public void setPageTotal(Integer pageTotal) {\n        this.pageTotal = pageTotal;\n    }\n\n    public Integer getPageSize() {\n        return pageSize;\n    }\n\n    public void setPageSize(Integer pageSize) {\n        this.pageSize = pageSize;\n    }\n\n    public Integer getPageTotalCount() {\n        return pageTotalCount;\n    }\n\n    public void setPageTotalCount(Integer pageTotalCount) {\n        this.pageTotalCount = pageTotalCount;\n    }\n\n    public List&lt;T&gt; getItmes() {\n        return itmes;\n    }\n\n    public void setItmes(List&lt;T&gt; itmes) {\n        this.itmes = itmes;\n    }\n\n    public String getUrl() {\n        return url;\n    }\n\n    public void setUrl(String url) {\n        this.url = url;\n    }\n\n    @Override\n    public String toString() {\n        return \"Page{\" +\n                \"pageNo=\" + pageNo +\n                \", pageTotal=\" + pageTotal +\n                \", pageSize=\" + pageSize +\n                \", pageTotalCount=\" + pageTotalCount +\n                \", itmes=\" + itmes +\n                \", url='\" + url + '\\'' +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-213.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"68\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-213.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2503\"  sizes=\"(max-width: 504px) 100vw, 504px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-214.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"190\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-214.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2504\"  sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">4.1.2 \u5728 Servlet \u7a0b\u5e8f\u7684 page \u5206\u9875\u65b9\u6cd5\u4e2d\u8bbe\u7f6e url \u7684\u5206\u9875\u8bf7\u6c42\u5730\u5740<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u5904\u7406\u5206\u9875\u529f\u80fd\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 pageNo \u548c pageSize\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),1);\n\n        int pageSize = WebUtils.parseInt(req.getParameter(\"pageSize\"), Page.PAGE_SIZE);\n        \/\/ 2. \u8c03\u7528BookService.page(pageNo,PageSize)\uff1aPage\u5bf9\u8c61\n        Page&lt;Book&gt; page = bookService.page(pageNo,pageSize);\n\n        page.setUrl(\"client\/bookServlet?action=page\");\n\n        \/\/ 3. \u4fdd\u5b58Page\u5bf9\u8c61\u5230Request\u57df\u4e2d\n        req.setAttribute(\"page\",page);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/client\/index.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/client\/index.jsp\").forward(req,resp);\n\n    }<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-215.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"865\" height=\"382\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-215.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2505\"  sizes=\"(max-width: 865px) 100vw, 865px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">4.1.3\u3001\u4fee\u6539\u5206\u9875\u6761\u4e2d\u8bf7\u6c42\u5730\u5740\u4e3a url \u53d8\u91cf\u8f93\u51fa,\u5e76\u62bd\u53d6\u4e00\u4e2a\u5355\u72ec\u7684 jsp \u9875\u9762<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%--\n  Created by IntelliJ IDEA.\n  User: ZRich\n  Date: 2022\/12\/11\n  Time: \u4e0b\u5348 7:30\n  To change this template use File | Settings | File Templates.\n--%&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n\n&lt;%-- \u5206\u9875\u6761\u7684\u5f00\u59cb --%&gt;\n&lt;div id=\"page_nav\"&gt;\n    &lt;%-- \u5927\u4e8e\u9996\u9875\uff0c\u624d\u663e\u793a --%&gt;\n    &lt;c:if test=\"${requestScope.page.pageNo &gt; 1}\"&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=1\"&gt;\u9996\u9875&lt;\/a&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageNo-1}\"&gt;\u4e0a\u4e00\u9875&lt;\/a&gt;\n    &lt;\/c:if&gt;\n\n    &lt;%-- \u9875\u7801\u8f93\u51fa\u7684\u5f00\u59cb --%&gt;\n    &lt;c:choose&gt;\n\n        &lt;%-- \u60c5\u51b51\uff1a\u5982\u679c\u603b\u9875\u7801\u5c0f\u4e8e\u7b49\u4e8e5\u7684\u60c5\u51b5\uff0c\u9875\u7801\u7684\u8303\u56f4\u662f\uff1a1-\u603b\u9875\u7801 --%&gt;\n        &lt;c:when test=\"${requestScope.page.pageTotal &lt;= 5}\"&gt;\n            &lt;c:set var=\"begin\" value=\"1\" \/&gt;\n            &lt;c:set var=\"end\" value=\"${requestScope.page.pageTotal}\" \/&gt;\n        &lt;\/c:when&gt;\n\n        &lt;%-- \u60c5\u51b52\uff1a\u603b\u9875\u7801\u5927\u4e8e5\u7684\u60c5\u51b5\u3002 --%&gt;\n        &lt;c:when test=\"${requestScope.page.pageTotal &gt; 5}\"&gt;\n\n            &lt;c:choose&gt;\n\n                &lt;%--\u5c0f\u60c5\u51b5 1\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u524d\u9762 3 \u4e2a\uff1a1\uff0c2\uff0c3 \u7684\u60c5\u51b5\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a1-5.--%&gt;\n                &lt;c:when test=\"${requestScope.page.pageNo &lt;= 3}\"&gt;\n                    &lt;c:set var=\"begin\" value=\"1\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"5\" \/&gt;\n                &lt;\/c:when&gt;\n\n                &lt;%-- \u5c0f\u60c5\u51b5 2\uff1a\u5f53\u524d\u9875\u7801\u4e3a\u6700\u540e 3 \u4e2a\uff0c8\uff0c9\uff0c10\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u603b\u9875\u7801\u51cf 4 - \u603b\u9875\u7801 --%&gt;\n                &lt;c:when test=\"${requestScope.page.pageNo &gt;= requestScope.page.pageTotal - 3}\"&gt;\n                    &lt;c:set var=\"begin\" value=\"${requestScope.page.pageTotal - 4}\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"${requestScope.page.pageTotal}\" \/&gt;\n                &lt;\/c:when&gt;\n\n                &lt;%-- \u5c0f\u60c5\u51b5 3\uff1a4\uff0c5\uff0c6\uff0c7\uff0c\u9875\u7801\u8303\u56f4\u662f\uff1a\u5f53\u524d\u9875\u7801\u51cf 2 - \u5f53\u524d\u9875\u7801\u52a0 2 --%&gt;\n                &lt;c:otherwise&gt;\n                    &lt;c:set var=\"begin\" value=\"${requestScope.page.pageNo - 2}\" \/&gt;\n                    &lt;c:set var=\"end\" value=\"${requestScope.page.pageNo + 2}\" \/&gt;\n                &lt;\/c:otherwise&gt;\n\n            &lt;\/c:choose&gt;\n\n        &lt;\/c:when&gt;\n\n    &lt;\/c:choose&gt;\n\n    &lt;c:forEach begin=\"${begin}\" end=\"${end}\" var=\"i\"&gt;\n        &lt;c:if test=\"${i == requestScope.page.pageNo}\"&gt;\n            \u3010${i}\u3011\n        &lt;\/c:if&gt;\n        &lt;c:if test=\"${i != requestScope.page.pageNo}\"&gt;\n            &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${i}\"&gt;${i}&lt;\/a&gt;\n        &lt;\/c:if&gt;\n    &lt;\/c:forEach&gt;\n\n    &lt;%-- \u9875\u7801\u8f93\u51fa\u7684\u7ed3\u675f --%&gt;\n\n    &lt;%-- \u5982\u679c\u5df2\u7ecf \u662f\u6700\u540e\u4e00\u9875\uff0c\u5219\u4e0d\u663e\u793a\u4e0b\u4e00\u9875\uff0c\u672b\u9875 --%&gt;\n    &lt;c:if test=\"${requestScope.page.pageNo &lt; requestScope.page.pageTotal}\"&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageNo+1}\"&gt;\u4e0b\u4e00\u9875&lt;\/a&gt;\n        &lt;a href=\"${ requestScope.page.url }&amp;pageNo=${requestScope.page.pageTotal}\"&gt;\u672b\u9875&lt;\/a&gt;\n    &lt;\/c:if&gt;\n    \u5171${requestScope.page.pageTotal}\u9875\uff0c${requestScope.page.pageTotalCount}\u6761\u8bb0\u5f55\n    \u5230\u7b2c&lt;input value=\"${param.pageNo}\" name=\"pn\" id=\"pn_input\"\/&gt;\u9875\n    &lt;input id=\"searchPageBtn\" type=\"button\" value=\"\u786e\u5b9a\"&gt;\n\n    &lt;script type=\"text\/javascript\"&gt;\n\n        $(function () {\n            \/\/ \u8df3\u5230\u6307\u5b9a\u7684\u9875\u7801\n            $(\"#searchPageBtn\").click(function () {\n\n                var pageNo = $(\"#pn_input\").val();\n\n                var pageTotal = ${requestScope.page.pageTotal};\n\n                if (pageNo &lt; 1) {\n                    pageNo = 1;\n\n                    location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n                    pageNo.val(1)\n                }\n\n                if (pageNo &gt; pageTotal) {\n                    pageNo = pageTotal;\n                    location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n                    pageno.val(pageTotal)\n                }\n\n                \/\/ javaScript\u8bed\u8a00\u4e2d\u63d0\u4f9b\u4e86\u4e00\u4e2aLocation\u5730\u5740\u680f\u5bf9\u8c61\n                \/\/ \u5b83\u6709\u4e00\u4e2a\u5c5e\u6027\u53ebhref. \u5b83\u53ef\u4ee5\u83b7\u53d6\u6d4f\u89c8\u5668\u5730\u5740\u680f\u4e2d\u7684\u5730\u5740\n                \/\/ href\u5c5e\u6027\u53ef\u8bfb\uff0c\u53ef\u5199\n                location.href = \"${pageScope.basePath}${ requestScope.page.url }&amp;pageNo=\" + pageNo;\n            })\n\n        })\n\n    &lt;\/script&gt;\n\n&lt;\/div&gt;\n&lt;%-- \u5206\u9875\u6761\u7684\u7ed3\u675f --%&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5\u3001\u9996\u9875\u4ef7\u683c\u641c\u7d22<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-216-1024x459.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"459\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-216-1024x459.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2506\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>ClientBookServlet.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u5904\u7406\u6309\u4ef7\u683c\u67e5\u627e \u5206\u9875\u529f\u80fd\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void pageByPrice(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 pageNo \u548c pageSize\n        int pageNo = WebUtils.parseInt(req.getParameter(\"pageNo\"),1);\n\n        int pageSize = WebUtils.parseInt(req.getParameter(\"pageSize\"), Page.PAGE_SIZE);\n\n        int min = WebUtils.parseInt(req.getParameter(\"min\"),0);\n        int max = WebUtils.parseInt(req.getParameter(\"max\"), Integer.MAX_VALUE);\n\n        \/\/ 2. \u8c03\u7528BookService.page(pageNo,PageSize)\uff1aPage\u5bf9\u8c61\n        Page&lt;Book&gt; page = bookService.pageByPrice(pageNo,pageSize,min,max);\n\n        StringBuilder sb = new StringBuilder(\"client\/bookServlet?action=pageByPrice\");\n\n        \/\/ \u5982\u679c\u6709\u6700\u5c0f\u4ef7\u683c\u7684\u53c2\u6570\uff0c\u8ffd\u52a0\u5230\u5206\u9875\u6761\u7684\u5730\u5740\u53c2\u6570\u4e2d\n        if (req.getParameter(\"min\") != null) {\n            sb.append(\"&amp;min=\").append(req.getParameter(\"min\"));\n        }\n        \/\/ \u5982\u679c\u6709\u6700\u5927\u4ef7\u683c\u7684\u53c2\u6570\uff0c\u8ffd\u52a0\u5230\u5206\u9875\u6761\u7684\u5730\u5740\u53c2\u6570\u4e2d\n        if (req.getParameter(\"max\") != null) {\n            sb.append(\"&amp;max=\").append(req.getParameter(\"max\"));\n        }\n\n        page.setUrl(sb.toString());\n\n        \/\/ 3. \u4fdd\u5b58Page\u5bf9\u8c61\u5230Request\u57df\u4e2d\n        req.setAttribute(\"page\",page);\n        \/\/ 4. \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/client\/index.jsp\u9875\u9762\n        req.getRequestDispatcher(\"\/pages\/client\/index.jsp\").forward(req,resp);\n\n    }<\/code><\/pre>\n\n\n\n<p>BookServiceImpl.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Override\n    public Page&lt;Book&gt; pageByPrice(int pageNo, int pageSize, int min, int max) {\n        Page&lt;Book&gt; page = new Page&lt;Book&gt;();\n\n        \/\/ \u8bbe\u7f6e\u6bcf\u9875\u663e\u793a\u7684\u6570\u91cf\n        page.setPageSize(pageSize);\n\n        \/\/ \u6c42\u603b\u8bb0\u5f55\u6570\n        Integer pageTotalCount = bookDao.queryForPageTotalCountByPrice(min, max);\n        \/\/ \u8bbe\u7f6e\u603b\u8bb0\u5f55\u6570\n        page.setPageTotalCount(pageTotalCount);\n\n        \/\/ \u6c42\u603b\u9875\u7801\n        Integer pageTotal = pageTotalCount \/ pageSize;\n        if (pageTotalCount % pageSize &gt; 0){\n            pageTotal += 1;\n        }\n        \/\/ \u8bbe\u7f6e\u603b\u9875\u7801\n        page.setPageTotal(pageTotal);\n\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u7801\n        page.setPageNo(pageNo);\n\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\u7684\u5f00\u59cb\u7d22\u5f15\n        int begin = (page.getPageNo() - 1) * pageSize;\n        \/\/ \u6c42\u5f53\u524d\u9875\u6570\u636e\n        List&lt;Book&gt; items = bookDao.queryForPageItemsByPrice(begin,pageSize,min,max);\n        \/\/ \u8bbe\u7f6e\u5f53\u524d\u9875\u6570\u636e\n        page.setItmes(items);\n\n        return page;\n    }<\/code><\/pre>\n\n\n\n<p>BookDaoImpl.java<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Override\n    public Integer queryForPageTotalCountByPrice(int min, int max) {\n\n        String sql = \"select count(*) from t_book where price between ? and ?\";\n        Number count = (Number) queryForSingleValue(sql,min,max);\n        return count.intValue();\n    }\n\n    @Override\n    public List&lt;Book&gt; queryForPageItemsByPrice(int begin, int pageSize, int min, int max) {\n        String sql = \"select id,name,author,price,sales,stock,img_path imgpath \" +\n                \"from t_book where price between ? and ? order by price limit ?,?\";\n        return queryForList(Book.class,sql,min,max,begin,pageSize);\n    }<\/code><\/pre>\n\n\n\n<p>index.jsp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;form action=\"client\/bookServlet\" method=\"get\"&gt;\n\t\t\t\t\t&lt;input type=\"hidden\" name=\"action\" value=\"pageByPrice\"&gt;\n\t\t\t\t\t\u4ef7\u683c\uff1a&lt;input id=\"min\" type=\"text\" name=\"min\" value=\"${param.min}\"&gt; \u5143 -\n\t\t\t\t\t\t&lt;input id=\"max\" type=\"text\" name=\"max\" value=\"${param.max}\"&gt; \u5143\n\t\t\t\t\t\t&lt;input type=\"submit\" value=\"\u67e5\u8be2\" \/&gt;\n\t\t\t\t&lt;\/form&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-217.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"755\" height=\"180\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-217.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2507\"  sizes=\"(max-width: 755px) 100vw, 755px\" \/><\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u4e66\u57ce\u9879\u76ee-\u7b2c\u4e94\u9636\u6bb5\uff1a\u56fe\u4e66\u5206\u9875\u7684\u5206\u6790\u3001\u4e66\u57ce\u9879\u76ee-\u5206\u9875\u6a21\u578bPage\u5bf9\u8c61\u7684\u521b\u5efa\u3001\u4e66\u57ce\u9879\u76ee-\u5206\u9875\u521d\u6b65\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u9996 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[61],"class_list":["post-2488","post","type-post","status-publish","format-standard","hentry","category-javaweb-code","tag-javaweb"],"_links":{"self":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2488"}],"collection":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2488"}],"version-history":[{"count":2,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2488\/revisions"}],"predecessor-version":[{"id":2717,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2488\/revisions\/2717"}],"wp:attachment":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}