本文共 7132 字,大约阅读时间需要 23 分钟。
之前写的通用分页1描述了
1.对通用分页的后台代码进行封装 2.简化后台代码 通用分页2目标 1.前台代码进行封装 2.页面的形式展现出来 Web包package com.zxp.web;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.zxp.dao.BookDao;import com.zxp.entity.Book;import com.zxp.util.PageBean;public class BookServlet extends HttpServlet{ private static final long serialVersionUID = -5139794703066837744L; private BookDao bookDao=new BookDao(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 查询数据库 String bname=req.getParameter("bname");//传数据名 Book book = new Book(); book.setBname(bname); PageBean pageBean=new PageBean(); try { Listlist = bookDao.list(book, pageBean); req.setAttribute("bookList", list); req.getRequestDispatcher("/bookList.jsp").forward(req, resp); } catch (Exception e) { e.printStackTrace(); } }}
Web.xml
T_pagebean encodingFiter com.zxp.util.EncodingFiter encodingFiter /* bookServlet com.zxp.web.BookServlet bookServlet /bookServlet
Jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>小说 小说目录
编号 | 名称 | 价格 |
${b.bid } | ${b.bname } | ${b.price } |
无分页页面展示
思维导图 通用分页核心思路 将上一次查询请求再发一次,只不过页码变了 详细思路: 对pagebean增强(添加url、paramMap属性,添加初始化pagebean的方法、最大页、上一页、下一页方法)package com.zxp.util;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;/** * 分页工具类 * */public class PageBean { private int page = 1;// 页码 private int rows = 10;// 页大小 private int total = 0;// 总记录数 // 保留上一的请求地址 private String url; // 保留上一次请求所携带的参数 private MappaMap = new HashMap<>(); /** * pageBean初始化方法 * * @param req */ public void setRequest(HttpServletRequest req) { // 保存上一次请求所携带的参数 this.setPaMap(req.getParameterMap()); this.setUrl(req.getRequestURI().toString()); // 在jsp页面来控制是否分页 this.setPagination(req.getParameter("pagination")); // 在jsp页面 控制一页展示多少条 this.setRows(req.getParameter("rows")); this.setPage(req.getParameter("page")); } public void setPagination(String pagination) { if ("false".equals(pagination)) { this.setPagination(false); } } public void setRows(String rows) { if (StringUtils.isNotBlank(rows)) { this.setRows(Integer.valueOf(rows)); } } public void setPage(String page) { if (StringUtils.isNotBlank(page)) { this.setPage(Integer.valueOf(page)); } } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public Map getPaMap() { return paMap; } public void setPaMap(Map paMap) { this.paMap = paMap; } private boolean pagination = true;// 是否分页 public PageBean() { super(); } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getRows() { return rows; } public void setRows(int rows) { this.rows = rows; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public void setTotal(String total) { this.total = Integer.parseInt(total); } public boolean isPagination() { return pagination; } public void setPagination(boolean pagination) { this.pagination = pagination; } /** * 获得起始记录的下标 * * @return */ public int getStartIndex() { return (this.page - 1) * this.rows; } @Override public String toString() { return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]"; } /** * 最大页码 * * @return */ public int getMaxPage() { return this.total % this.rows == 0 ? this.total / this.rows : this.total / this.rows + 1; } /** * 获取下一页 * * @return */ public int getNextPage() { return this.page < this.getMaxPage() ? this.page + 1 : this.page; } /** * 获取上一页 * * @return */ public int getPreviousPage() { return this.page > 1 ? this.page - 1 : this.page; }
封装分页标签
自定义page分页标签(助手类、tld、jsp引用标签库) 将按钮条写入标签助手类 将隐藏的form表单写入标签助手类 将对应的js代码写入标签助手类package com.zxp.tag;import java.io.IOException;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.BodyTagSupport;import com.zxp.util.PageBean;public class PageTag extends BodyTagSupport{ private static final long serialVersionUID = 1L; private PageBean pageBean; @Override public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); try { out.write(toHTML()); } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } public String toHTML() { StringBuffer sb = new StringBuffer(); //下一次请求提交到后台的表单html代码拼接 sb.append("
tld
zxp 1.1 core library zxp core 1.1 c /zxp page com.zxp.tag.PageTag JSP pageBean true true
Jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib prefix="z" uri="/zxp" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>小说 小说目录
编号 | 名称 | 价格 |
${b.bid } | ${b.bname } | ${b.price } |
不带条件的搜索
带条件的 (搜索斗破) 分页效果点击尾页 上一页 下一页 跳页转载地址:http://syrzi.baihongyu.com/