jsp页面显示分页
pagebean.java
public class PageBean { private int page = 1;// 页码 private int rows = 10;// 页大小 private int total = 0;// 总记录数 private boolean pagination = true;// 是否分页 private MappaMap=new HashMap<>(); private String url; 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 setPage(String page) { this.page=StringUtils.isNotBlank(page)?Integer.valueOf(page):this.page; } public void setPagination(String pagination) { this.pagination=StringUtils.isNotBlank(pagination)?!"false".equals(pagination):this.pagination; } public void setRows(String rows) { this.rows=StringUtils.isNotBlank(rows)?Integer.valueOf(rows):this.rows; } public Map getPaMap() { return paMap; } public void setPaMap(Map paMap) { this.paMap = paMap; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } 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; }}
bookServlet.java
package com.web;import java.io.IOException;import java.sql.SQLException;import java.util.List;import java.util.Map;import javax.jws.WebService;import javax.servlet.ServletException;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Book;import com.jt.dao.BookDao;import com.util.PageBean;@WebServlet("/bookServlet ")public class BookServlet extends HttpServlet { private static final long serialVersionUID = 6304839939800249916L; private BookDao bookDao=new BookDao(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub String bname=req.getParameter("bname"); Book book=new Book(); book.setBname(bname); // MapparameterMap=req.getParameterMap();// StringBuffer url= req.getRequestURL(); PageBean pageBean=new PageBean(); try { pageBean.setRequest(req); List list= this.bookDao.list(book, pageBean); req.setAttribute("bookList", list); req.setAttribute("pageBean",pageBean); req.getRequestDispatcher("/BookList.jsp").forward(req, resp); } catch (InstantiationException | IllegalAccessException | SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
过滤器:EncodingFiter.java
package com.util;import java.io.IOException;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 中文乱码处理 * */public class EncodingFiter implements Filter { private String encoding = "UTF-8";// 默认字符集 public EncodingFiter() { super(); } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; // 中文处理必须放到 chain.doFilter(request, response)方法前面 res.setContentType("text/html;charset=" + this.encoding); if (req.getMethod().equalsIgnoreCase("post")) { req.setCharacterEncoding(this.encoding); } else { Map map = req.getParameterMap();// 保存所有参数名=参数值(数组)的Map集合 Set set = map.keySet();// 取出所有参数名 Iterator it = set.iterator(); while (it.hasNext()) { String name = (String) it.next(); String[] values = (String[]) map.get(name);// 取出参数值[注:参数值为一个数组] for (int i = 0; i < values.length; i++) { values[i] = new String(values[i].getBytes("ISO-8859-1"), this.encoding); } } } chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { String s = filterConfig.getInitParameter("encoding");// 读取web.xml文件中配置的字符集 if (null != s && !s.trim().equals("")) { this.encoding = s.trim(); } }}
自定义标签类:PageTag.java
package com.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.util.PageBean;public class PageTag extends BodyTagSupport { private static final long serialVersionUID = -553969530960334073L; private PageBean pageBean; public PageBean getPageBean() { return pageBean; } public void setPageBean(PageBean pageBean) { this.pageBean = pageBean; } @Override public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); try { out.print(toHTML()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return super.doStartTag(); } private String toHTML() { // TODO Auto-generated method stub StringBuilder sb=new StringBuilder(); //拼接下一次发送请求所要提交得隐藏得form表单 sb.append("
jsp页面:bookList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="z" uri="/jt" %>Insert title here 小说目录
编号 | 名称 | 价格 |
${b.bid } | ${b.bname } | ${b.price } |
接下来就是运行结果:
(在这里我们可以跳转,首页尾页下一页上一页)
再接下来就是通用分页带给我们的好处演示啦
新建一个servlet跟jsp页面
servlet
package com.web;import java.io.IOException;import java.sql.SQLException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Blog;import com.jt.dao.BlogDao;import com.util.PageBean;@WebServlet("/blogServlet")public class BlogServlet extends HttpServlet { private BlogDao blogDao=new BlogDao(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub Blog blog=new Blog(); blog.setBookname(req.getParameter("bookname")); PageBean pageBean=new PageBean(); try { Listlist = this.blogDao.list(blog, pageBean); req.setAttribute("blogList",list); req.setAttribute("pageBean",pageBean); req.getRequestDispatcher("/BlogList.jsp").forward(req, resp); } catch (InstantiationException | IllegalAccessException | SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="z" uri="/jt" %>Insert title here 小说目录
编号 | 名称 |
${b.id } | ${b.bookname } |
演示到这里就结束啦!!!