jsp分页显示

后台javabean

import java.util.List;

public class PageUtil {
    // 当前页页码(1,2,3....)
    private int pageNo;

    // 每页显示条数
    private int pageSize;

    // 总记录(条数)
    private int totalCount;

    // 当前页数据集合
    private List<?> data;

    // 总页数
    private int totalPage;

    /**
     * 构造方法,传递每页条数和总记录数
     * 
     * @param 每页显示条数
     * @param 总记录数
     */
    public PageUtil(int pageSize, int totalCount) {
        this.pageSize = pageSize;
        this.totalCount = totalCount;
        if (this.totalCount % this.pageSize == 0) {
            // 计算总页数
            this.totalPage = this.totalCount / this.pageSize;
        } else {
            this.totalPage = this.totalCount / this.pageSize + 1;
        }
    }

    public List<?> getData() {
        return data;
    }

    public void setData(List<?> data) {
        this.data = data;
    }

    public int getPageNo() {
        return pageNo;
    }

    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public int getTotalPage() {
        return totalPage;
    }

}

sql查询语句

mysql

//startMessage从第几条开始
//pageSize每页显示的数据量
select * from table  limit #{startMessage},#{pageSize}

sqlserver

//原理:子查询查到当前页之前的页的所有数据,将除了之前的所有数据当作一个整体进行select top查询,查询量为每页要显示的数据量
//pageNo当前页数减
//pageSize每页显示的数据量
SELECT TOP #{pageSize} * FROM items where id not in(select top(#{pageSize}*#{pageNo-1}) id from items) 

后台action

@WebServlet("/itemsList.do")
public class itemsListServlet extends HttpServlet {

    private Dao dao;

    protected void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        int pageNo = Integer.parseInt(request.getParameter("pageNo"));
        int pageSize = Integer.parseInt(request.getParameter("pageSize"));
        dao = new Dao();
        //获得总记录数
         String sql3 = "select count(*)'count' from items";
         List<Map<String, Object>> count = dao.exucteQuery(sql3);
         int totalCount = (int)count.get(0).get("count");
       dao = new Dao();
       PageUtil page = new PageUtil(pageSize, totalCount);
       //分页查询
       String sql4 = "SELECT TOP "+pageSize+" * FROM items where id not in(select top("+pageSize+"*"+(pageNo-1)+") id from items)";
       List<Map<String, Object>> items = dao.exucteQuery(sql4);
       List<Items> itemsList = new ArrayList<Items>();
       for(Map<String, Object> ind : items){
            Items item = new Items();
            item.setItem_id(Integer.parseInt(ind.get("id")+""));
            item.setItem_name(ind.get("name")+"");
            item.setItem_price(Float.parseFloat(ind.get("price")+""));
            item.setItem_detail(ind.get("detail")+"");
            itemsList.add(item);
        }
        //将数据存到page对象中
       page.setPageNo(pageNo);
       page.setData(itemsList);
       request.setAttribute("page", page);
       request.getRequestDispatcher("itemsList.jsp").forward(request, response);
    }

}

jsp页面

所有的href为:action?+查询条件
            <tr>
                <td class="altbg2" colspan="7" rowspan="2" align="center">
                    总共【${page.totalPage}】页
                    &nbsp;&nbsp;${page.pageNo}/${page.totalPage}&nbsp;&nbsp; <a
                    href="${pageContext.request.contextPath }/itemsList.do?pageNo=1&pageSize=${page.pageSize }">首页</a> <c:choose>
                        <c:when test="${requestScope.page.pageNo > 1}">
                            <a href="${pageContext.request.contextPath }//itemsList.do?pageNo=${page.pageNo-1}&pageSize=${page.pageSize }">上一页</a>
                        </c:when>
                        <c:otherwise>
                        上一页
                    </c:otherwise>
                    </c:choose> <c:choose>
                        <c:when test="${page.pageNo < page.totalPage}">
                            <a href="${pageContext.request.contextPath }/itemsList.do?pageNo=${page.pageNo+1}&pageSize=${page.pageSize }">下一页</a>
                        </c:when>
                        <c:otherwise>
                        下一页
                    </c:otherwise>
                    </c:choose> <a href="${pageContext.request.contextPath }/itemsList.do?pageNo=${page.totalPage}&pageSize=${page.pageSize }">尾页</a>
                    每页显示
                    <input type="text"
                            value="${page.pageSize }" name="pageSize"><input type="button" value="确定" onclick="chage()">
                </td>
                    </tr>

//js代码
<script language="javascript">
    function chage(){
        this.document.addItem.action = "${pageContext.request.contextPath }/itemsList.do?pageNo=1";
        document.addItem.submit();
        return true;
    }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值