关于Servlet的List假分页

来源:互联网 发布:java远程连接ssh主机 编辑:程序博客网 时间:2024/06/06 04:20

Page类

import java.util.ArrayList;import java.util.List;/** *  * @ClassName: PageModel  * @Description: 从List中获取子list实行分页  * */public class Page {    private int page = 1; // 当前页    public int totalPages = 0; // 总页数    private int pageRecorders;// 每页5条数据    private int totalRows = 0; // 总数据数    private int pageStartRow = 0;// 每页的起始数    private int pageEndRow = 0; // 每页显示数据的终止数    private boolean hasNextPage = false; // 是否有下一页    private boolean hasPreviousPage = false; // 是否有前一页    private List list;    // private Iterator it;    public Page(List list, int pageRecorders) {        init(list, pageRecorders);// 通过对象集,记录总数划分    }        /**     * 初始化list,并告之该list每页的记录数     * @param list     * @param pageRecorders     */    public void init(List list, int pageRecorders) {        this.pageRecorders = pageRecorders;        this.list = list;        totalRows = list.size();        // it = list.iterator();        hasPreviousPage = false;        if ((totalRows % pageRecorders) == 0) {            totalPages = totalRows / pageRecorders;        } else {            totalPages = totalRows / pageRecorders + 1;        }        if (page >= totalPages) {            hasNextPage = false;        } else {            hasNextPage = true;        }        if (totalRows < pageRecorders) {            this.pageStartRow = 0;            this.pageEndRow = totalRows;        } else {            this.pageStartRow = 0;            this.pageEndRow = pageRecorders;        }    }    // 判断要不要分页    public boolean isNext() {        return list.size() > 5;    }    public void setHasPreviousPage(boolean hasPreviousPage) {        this.hasPreviousPage = hasPreviousPage;    }    public String toString(int temp) {        String str = Integer.toString(temp);        return str;    }    public void description() {        String description = "共有数据数:" + this.getTotalRows() +        "共有页数: " + this.getTotalPages() +         "当前页数为:" + this.getPage() +        " 是否有前一页: " + this.isHasPreviousPage() +        " 是否有下一页:" + this.isHasNextPage() +        " 开始行数:" + this.getPageStartRow() +        " 终止行数:" + this.getPageEndRow();        System.out.println(description);    }    public List getNextPage() {        page = page + 1;        disposePage();        System.out.println("用户凋用的是第" + page + "页");        this.description();        return getObjects(page);    }    /**     * 处理分页     */    private void disposePage() {        if (page == 0) {            page = 1;        }        if ((page - 1) > 0) {            hasPreviousPage = true;        } else {            hasPreviousPage = false;        }        if (page >= totalPages) {            hasNextPage = false;        } else {            hasNextPage = true;        }    }    public List getPreviousPage() {        page = page - 1;        if ((page - 1) > 0) {            hasPreviousPage = true;        } else {            hasPreviousPage = false;        }        if (page >= totalPages) {            hasNextPage = false;        } else {            hasNextPage = true;        }        this.description();        return getObjects(page);    }    /**     * 获取第几页的内容     *      * @param page     * @return     */    public List getObjects(int page) {        if (page == 0)            this.setPage(1);        else            this.setPage(page);        this.disposePage();        if (page * pageRecorders < totalRows) {// 判断是否为最后一页            pageEndRow = page * pageRecorders;            pageStartRow = pageEndRow - pageRecorders;        } else {            pageEndRow = totalRows;            pageStartRow = pageRecorders * (totalPages - 1);        }        List objects = null;        if (!list.isEmpty()) {            objects = list.subList(pageStartRow, pageEndRow);        }        //this.description();        return objects;    }    public List getFistPage() {        if (this.isNext()) {            return list.subList(0, pageRecorders);        } else {            return list;        }    }    public boolean isHasNextPage() {        return hasNextPage;    }    public void setHasNextPage(boolean hasNextPage) {        this.hasNextPage = hasNextPage;    }    public List getList() {        return list;    }    public void setList(List list) {        this.list = list;    }    public int getPage() {        return page;    }    public void setPage(int page) {        this.page = page;    }    public int getPageEndRow() {        return pageEndRow;    }    public void setPageEndRow(int pageEndRow) {        this.pageEndRow = pageEndRow;    }    public int getPageRecorders() {        return pageRecorders;    }    public void setPageRecorders(int pageRecorders) {        this.pageRecorders = pageRecorders;    }    public int getPageStartRow() {        return pageStartRow;    }    public void setPageStartRow(int pageStartRow) {        this.pageStartRow = pageStartRow;    }    public int getTotalPages() {        return totalPages;    }    public void setTotalPages(int totalPages) {        this.totalPages = totalPages;    }    public int getTotalRows() {        return totalRows;    }    public void setTotalRows(int totalRows) {        this.totalRows = totalRows;    }    public boolean isHasPreviousPage() {        return hasPreviousPage;    }                public static void main(String args[]) {        List<String> list = new ArrayList<String>();        list.add("a");        list.add("b");        list.add("c");        list.add("d");        list.add("e");        list.add("f");        list.add("g");        list.add("h");        list.add("h");        list.add("i");        list.add("j");        list.add("k");        list.add("l");        list.add("m");        Page pm = new Page(list, 1);                        List sublist = pm.getObjects(3);        for(int i = 0; i < sublist.size(); i++) {            System.out.println(sublist.get(i));        }        //System.out.println("............"+sublist.get(0));        }}
HTML页面

<pre name="code" class="html"><% <span></span>List saleGoodsList = (List) request.getAttribute("subList");<span></span>for (Object list : saleGoodsList) {<span></span>Goods goods = (Goods) list; %><tr><span></span><td><span></span><img  src="<%=goods.getPic_url()%>" width="120px" height="70px"><span></span></td><span></span><td><span></span><%=goods.getTitle()%><span></span><br/><span></span><%=goods.getPrice()%><span></span></td></tr><%<span></span>}%>
<tr>   <td><span></span><a href="saleGoodsList?pageNow=1&pageSize=5" >首页</a><span></span><c:choose><span></span><c:when test="${pageNow==1}"><span></span><a href="saleGoodsList?pageNow=1&pageSize=5">上一页</a><span></span></c:when><span></span><c:otherwise><span></span><a href="saleGoodsList?pageNow=${pageNow-1}&pageSize=5">上一页</a><span></span></c:otherwise>  <span></span></c:choose><span></span><c:choose><span></span><c:when test="${pageNow == totalPage}"><span></span><a href="saleGoodsList?pageNow=${totalPage}&pageSize=5">下一页</a><span></span></c:when><span></span><c:otherwise><span></span><a href="saleGoodsList?pageNow=${pageNow+1}&pageSize=5">下一页</a><span></span> </c:otherwise>  <span></span></c:choose><span></span><a href="saleGoodsList?pageNow=<%=request.getAttribute("totalPage")%>&pageSize=5">末页</a><span></span>当前第<%=request.getAttribute("pageNow") %>页 总共<%=request.getAttribute("totalPage") %>页  共<%=request.getAttribute("totalRow") %>条数据   </td></tr>

web.xml

  <servlet>  <servlet-name>saleGoodsServlet</servlet-name>  <servlet-class>servlet.saleGoodsServlet</servlet-class>  </servlet>  <servlet>  <servlet-name>storeGoodsServlet</servlet-name>  <servlet-class>servlet.storeGoodsServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>saleGoodsServlet</servlet-name>  <url-pattern>/saleGoodsList</url-pattern>  </servlet-mapping>   <servlet-mapping>  <servlet-name>storeGoodsServlet</servlet-name>  <url-pattern>/storeGoodsList</url-pattern>  </servlet-mapping>
Servlet类

public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//设置接受字符类型request.setCharacterEncoding("UTF-8");//设置输出字符类型response.setContentType("text/html;charset=UTF-8");TaobaoClient client = new DefaultTaobaoClient("http://gw.api.tbsandbox.com/router/rest", "***","***");String saleGoodsResult = TaobaoOpenApiDemo.saleGioodsGet(client);List<Goods> saleGoodsList = TaobaoOpenApiDemo.changeList(saleGoodsResult);//当前页页码Integer pageNow = Integer.parseInt(request.getParameter("pageNow"));//每页显示条数Integer pageSize = Integer.parseInt(request.getParameter("pageSize"));//总数据数Integer totalRow = saleGoodsList.size();//总页数Integer totalPage = totalRow % pageSize == 0 ? totalRow / pageSize : totalRow / pageSize + 1;//调用Page中List分页方法Page pm = new Page(saleGoodsList, pageSize);List subList = pm.getObjects(pageNow);request.setAttribute("subList", subList);request.setAttribute("pageNow", pageNow);request.setAttribute("totalRow", totalRow);request.setAttribute("totalPage", totalPage);//返回页面RequestDispatcher rd = request.getRequestDispatcher("saleGoodsList.jsp"); rd.forward(request, response);}





0 0