JSP交互---分页查询(基本分页查询)
2017-10-17 15:13
387 查看
1、新建分页工具类 PageBean
public class PageBean { /** * 当前页 的 页号 */ private Integer pageNo; /** * 分页显示条数 设置默认值() */ private Integer pageSize=30; /** * 当前页数据在数据库查询的起始行(在数据库使用limit 查询的第一个数据) */ private Integer start; /** * 总页数 */ private Integer totalPage; /** * 总条数 */ private Integer count; /** * 分页(当前页)显示的信息 */ private List list =new ArrayList(); /** * (当前页的)上一页页号 */ private Integer previous; /** * (当前页的)下一页页号 */ private Integer next; public Integer getPageNo() { return pageNo; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalPage() { return totalPage; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getCount() { return count; } /** * 设置总条数 (根据总条数 对 PageBean 进行其他数据设置) * (重点) * @param count */ public void setCount(Integer count) { this.count = count; //设置总页数 totalPage=count%pageSize==0?count/pageSize:count/pageSize+1; //验证页号 if(pageNo<0){ pageNo=1; }else if(pageNo>totalPage){ pageNo=totalPage; } //确认当前页 上页页号 //如果当前页页号 >1 它的上一页页号是 pageNo-1 //否则 那么它的上一页页号是它自己 if(pageNo>1){ previous=pageNo-1; }else{ previous=1; } //确认当前页 下页页号 //如果当前页页号 < 总页数 它的下一页页号是 pageNo+1 //否则 那么它的下一页页号是它自己 if (pageNo<totalPage) { next=pageNo+1; } else { next=pageNo; } //确认当前页数据在数据库查询的起始行 //进行判定是为了防止 总页数totalPage为0的情况下--->在验证页号时 对当前页号进行pageNo进行从新赋值为0 //传入的pageNo 为1(默认); if(pageNo>0){ start = (pageNo - 1) * pageSize; }else{ start=0; } } public Integer getStart() { return start; } public void setStart(Integer start) { this.start = start; } public List getList() { return list; } public void setList(List list) { this.list = list; } public Integer getPrevious() { return previous; } public void setPrevious(Integer previous) { this.previous = previous; } public Integer getNext() { return next; } public void setNext(Integer next) { this.next = next; } }
2、在UserServiceImpl—–>用户表的业务逻辑类 中添加分页查询方法
/** * 分页查询 * 获取当前页 用户 * @return */ public PageBean getAll(int pageNo) { //新建 分页类的 实例 PageBean pb = new PageBean(); //写入当前页号 (先写入当前页页号---注意) pb.setPageNo(pageNo); //写入总条数---调用数据持久化层的 获取总条数方法(select count(*) from user;) //umi是---->private UserDao umi = new UserMysqlImpl();数据持久化层接口的实现类的实例 pb.setCount(umi.getUserCount()); //查询 写入分页(当前页)显示的信息 //调用数据持久化层的 分页查询方法(select * from smbms_user limit ?,?) //getAll(int start,int pageSize) pb.setList(umi.getAll(pb.getStart(), pb.getPageSize())); return pb; }
3、新建查询 用户的 servlet—–>UserListServlet
public class UserListServlet extends HttpServlet { //创建全局变量 PageBean工具类的实例 PageBean pb=new PageBean(); //重写 doPost 方法 (这里就只重写了一个----->编码过滤器和session过滤器省略) public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取页号 //默认 初始值为1 int pageNo = 1; //从页面获取页号 数据 if (request.getParameter("pageNo") != null) { pageNo = Integer.parseInt(request.getParameter("pageNo")); } //当前页 limit 数据 //下面创建的是 User 业务逻辑类的实例 UserServiceImpl usi = new UserServiceImpl(); //根据 页号查询当前页的信息(在业务逻辑类的方法中 为当前页设置 关于当前的一些信息) pb = usi.getAll(pageNo); //写入数据 传到页面(传回页面的是 PageBean 的示例) request.setAttribute("pb", pb); request.getRequestDispatcher("/jsp/userList.jsp").forward(request, response); } }
4、在jsp页面 对接收到的 页面信息 进行输出
<!--对 控制器传回的 PageBean 实例进行数据处理--> <!-- PageBean 的 list 属性 储存了当前页 要展示的实体类 User类的集合--> <!-- 运用 c:forEach 对 list 进行遍历 items="${requestScope.pb.list }"--> <c:forEach var="user" items="${requestScope.pb.list }" varStatus="row"> <tr> <td height="23"><span class="STYLE1">${user.id }</span></td> <td><span class="STYLE1"><a href="UserViewServlet?userId=${user.id}"> ${user.name }</a> </span></td> <td><span class="STYLE1"> ${user.loginName } </span></td> <td><span class="STYLE1"> ${user.gender==1?"男":"女" }</span></td> <td><span class="STYLE1"> ${user.age }</span></td> <td><span class="STYLE1">${user.phone }</span></td> <td><span class="STYLE1"> ${user.type==1?"管理员":"普通员工"} </span></td> </tr> </c:forEach> <a href="UserListServlet?pageNo=1">首页</a> <a href="UserListServlet?pageNo=${requestScope.pb.previous } ">上一页</a> <a href="UserListServlet?pageNo=${requestScope.pb.next}">下一页</a> <a href="UserListServlet?pageNo=${requestScope.pb.totalPage} ">末页</a> 当前第${requestScope.pb.pageNo }页 , 总页数:${requestScope.pb.totalPage} ,总条数:${requestScope.pb.count}
传到页面的是PageBean 的实例 这个实例 储存了当前页的一些信息:
/** * 当前页 的 页号 */ private Integer pageNo; /** * 分页(当前页)显示的信息 */ private List list =new ArrayList(); /** * (当前页的)上一页页号 */ private Integer previous; /** * (当前页的)下一页页号 */ private Integer next;
其余信息不作特别列出
根据 上一页 下一页 传回的页号 对 PageBean 的实例 pb 进行更新
相关文章推荐
- JSP交互---分页查询(条件分页查询)
- JSP交互---Ajax异步分页查询(条件分页查询)
- JSP高效分页查询代码
- 高效的jsp分页查询
- jsp中实现分页查询
- JSP实战精讲:分页查询
- 关于JSP查询数据库显示分页
- JSP 分页查询关键代码!
- jsp分页查询与显示,一只纯菜鸟的角度....
- Solr4:Solr查询结果JSP分页显示(每次查询只返回指定记录数)
- lucene5学习 - 索引基本操作(创建,查询,更新,删除,分页)
- 高效的jsp分页查询
- JSP通用查询处理与分页显示
- 分页查询+请求转发+重定向(servlet+jsp)
- JSP+Servlet+oracle 的一个分页查询小应用
- 学习笔记_用hibernateQBC动态查询+jsp的jstl标签库实现的动态查询以及分页特效
- jsp数据库查询分页技术
- 高效的jsp分页查询
- JSP通用查询处理与分页显示
- JSP通用分页组件,带查询条件