分页

来源:互联网 发布:程序员出书 编辑:程序博客网 时间:2024/05/07 17:47

分页:

数据库语句 :

String sql="select count(*) from gifts";   //查询记录条数总数
String sql = "  Select * from  gifts limit ?,?"; //从 某项查询开始查询 ,共某条 

MY:

Servlet 

int pages = 0; // 待显示页面int count = 0; // 总条数int totalpages = 0; // 总页数int limit = 10; // 每页显示记录条数protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession();    String strPage = request.getParameter("pages");    //获取跳页时传进来的当前页面参数(需要跳转到的页数)    int   pageNo=limit(strPage);   //判断页数是否越界(限制越界),把页数转换为数据库中的条数    List<Gifts> list=gs.limitGifts(pageNo, limit);   //从pageNo条开始查询 ,查询limit条    session.setAttribute("giftslist", list);  //返回分页查询到的数据    session.setAttribute("pages", pages);  //返回将要显示的页面数    session.setAttribute("totalpages", totalpages);//返回总页数response.sendRedirect("jsp/gifts.jsp");}


//分页查询public int  limit(String strPage ){count =gs.count();   //数据库中查询的总记录数    totalpages = (int)Math.ceil(count/(limit*1.0)); //由记录总数除以每页记录数得出总页数(ceil向正无穷取整 ,例:1.1=2 )    if (strPage == null) {  //第一次进入页面时,显示第一页        pages = 1;    } else {        try{            pages = java.lang.Integer.parseInt(strPage);  //从页面获取到的当前页面数,转为int型        }catch(Exception e){            pages = 1;        }        if (pages < 1){//当前页小于1(第一页时)            pages = 1;        }        if (pages > totalpages){  //当前页数大于总页数            pages = totalpages;        }                 }     return (pages - 1) * limit;  //把当前页数转为数据库对应的条数}

jsp 页面:



<td colspan="4" style="font-size: 20px">第${pages} 页 共${totalpages}页 <a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=1">首页</a><a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=${pages-1}"> 上一页</a> <a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=${pages+1}"> 下一页</a>  <a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=${ totalpages}">最后一页</a>   <form action="${pageContext.servletContext.contextPath}/LimitGifts.do"> 转到第:<input type="text" name="pages" size="8" >页 <input  class="btn btn-default"  type="submit" value="GO" name="cndok"> </form>  </td>

TEACHER:

jsp:

<div>  ${pageStr}</div>

servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String currentPage = request.getParameter("page"); //获取当前页号String sexs = request.getParameter("sex");String ages = request.getParameter("age");String username = request.getParameter("username");System.out.println("ages :"+ages);int currentNo = currentPage == null ? 1 : Integer.parseInt(currentPage);int sex = sexs == null? -1 : Integer.parseInt(sexs);int age = (ages == null || "".equals(ages)) ? 0 : Integer.parseInt(ages);Pager pager = new Pager(userServer.getTotalCount(sex,username,age),currentNo);pager.setUrl("user_list.servlet");pager.addParameter("sex", ""+sex);pager.addParameter("username", ""+username);pager.addParameter("age", ""+age);// 根据页号获取列表数据request.setAttribute("userLists", userServer.getUserLists(sex,username,age,pager.getIStart(), pager.getIStep()));request.setAttribute("currentPage", currentNo);request.setAttribute("pageCount", pager.getPageCount());request.setAttribute("pageStr", pager.getPageStr());request.getRequestDispatcher("user_list.jsp").forward(request, response);}

封装方法:

public class Pager {private int iStep =5; //每页记录数private int iStart;private int iEnd;private int iCount; //总记录数private int curPage; private int pageCount;//页数private int pageStep = 3;private String url;private String searchStr;private String parameter = "";public Pager(){}public Pager(int totalCount,int currentPage){setICount(totalCount);setCurPage(currentPage);}/** * @return Returns the iEnd. */public int getIEnd() {return iEnd;}/** * @return Returns the iStart. */public int getIStart() {return iStart;}/** * @param searchStr *            The searchStr to set. */public void setSearchStr(String searchStr) {this.searchStr = searchStr;}/** * @param curPage *            The curPage to set. */public void setCurPage(int curPage) {if (curPage <= 0)return;this.curPage = curPage;if (this.iCount > 0) {this.iStart = this.iStep * (curPage - 1);if (curPage == this.pageCount)this.iEnd = this.iCount - 1;elsethis.iEnd = this.iStart + this.iStep;}}/** * @param count *            The iCount to set. */public void setICount(int count) {this.iCount = count;if (count > 0) {this.pageCount = count / this.iStep;this.pageCount += (count % this.iStep) == 0 ? 0 : 1;}}/** * @return Returns the pageCount. */public int getPageCount() {return pageCount;}/** * @param pageCount *            The pageCount to set. */public void setPageCount(int pageCount) {this.pageCount = pageCount;}/** * @return Returns the iStep. */public int getIStep() {return iStep;}/** * @param pageStep *            The iStep to set. */public void setIStep(int iStep) {this.iStep = iStep;}/** * @param url *            The url to set. */public void setUrl(String url) {this.url = url;}public String getPageStr() {StringBuffer sb = new StringBuffer("总共:");sb.append(this.iCount);sb.append("条记录  ");if (this.curPage > 1) {sb.append("<a href='");sb.append(url);sb.append("?page=1");sb.append(this.parameter);sb.append("'>");sb.append("首页");sb.append("</a>");sb.append("  ");sb.append("<a href='");sb.append(url);sb.append("?page=");sb.append(this.curPage - 1);sb.append(this.parameter);sb.append("'>");sb.append("上一页");sb.append("</a>");sb.append("  ");}int pageStart = (this.curPage - 1) / this.pageStep;for (int i = 1; i <= this.pageStep; i++) {if ((this.pageStep * pageStart + i) > this.pageCount)break;if (i == this.curPage % this.pageStep)sb.append("[" + this.curPage + "]");else {sb.append("<a href='");sb.append(url);sb.append("?page=");sb.append(this.pageStep * pageStart + i);sb.append(this.parameter);sb.append("'>");sb.append(this.pageStep * pageStart + i);sb.append("</a>");}sb.append("  ");}if (this.curPage < this.pageCount) {sb.append("<a href='");sb.append(url);sb.append("?page=");sb.append(this.curPage + 1);sb.append(this.parameter);sb.append("'>");sb.append("下一页");sb.append("</a>");sb.append("  ");sb.append("<a href='");sb.append(url);sb.append("?page=");sb.append(this.pageCount);sb.append(this.parameter);sb.append("'>");sb.append("尾页");sb.append("</a>");}if (this.searchStr != null && this.searchStr.length() > 0) {sb.append("<input type='hidden' ");sb.append("name='search' ");sb.append("value='");sb.append(this.searchStr);sb.append("'");}return sb.toString();}public void addParameter(String paramName, String paramProperty) {StringBuffer sb = new StringBuffer(this.parameter);sb.append("&");sb.append(paramName);sb.append("=");sb.append(paramProperty);this.parameter = sb.toString();}public static void main(String[] args) {Pager page = new Pager(22,1);page.setUrl("user_list.servlet");System.out.println(page.getPageStr());}}



<td colspan="4" style="font-size: 20px">第${pages} 页 共${totalpages}页 <a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=1">首页</a><a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=${pages-1}"> 上一页</a> <a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=${pages+1}"> 下一页</a>  <a href="${pageContext.servletContext.contextPath}/LimitGifts.do?pages=${ totalpages}">最后一页</a>   <form action="${pageContext.servletContext.contextPath}/LimitGifts.do"> 转到第:<input type="text" name="pages" size="8" >页 <input  class="btn btn-default"  type="submit" value="GO" name="cndok"> </form>  </td>
原创粉丝点击