Ajax实现分页

第一步先写一个分页工具类pageInfo

 下面是pageInfo的代码

public class PageInfo<T> {


    private Integer pageIndex;//当前页索引
    private Integer pageSize;//每页显示的条数
    private Integer totalCount;//总条数
    private Integer totalPage;//总页数
    private List<T> dataList;//当前页的数据集合
    public PageInfo() { }
    /**
     * 有参构造
     * @param pageIndex 当前页索引
     * @param pageSize 每页显示的条数
     * @param totalCount 总条数
     * @param dataList 当前页的数据集合
     */
    public PageInfo(Integer pageIndex, Integer pageSize, Integer totalCount,List<T> dataList) {
        this.pageIndex = pageIndex;
        this.pageSize = pageSize;
        this.totalCount = totalCount;//从数据库查询获取
        this.dataList = dataList;//从数据库查询获取
        this.totalPage=(totalCount%pageSize)==0?(totalCount/pageSize):(totalCount/pageSize+1);
    }
    public Integer getPageIndex() {
        return pageIndex;
    }
    public void setPageIndex(Integer pageIndex) {
        this.pageIndex = pageIndex;
    }
    public Integer getPageSize() {
        return pageSize;
    }
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    public Integer getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }
    public Integer getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }
    public List<T> getDataList() {
        return dataList;
    }
    public void setDataList(List<T> dataList) {
        this.dataList = dataList;
    }


}

下面是数据库设计

 下面是实体类编写,和数据库对应上就行


dao层下面写sql语句,以及实现类的代码

 UserdaoImpl实现类的实现分页的代码

    @Override
    public List<shoes> findByPage(Integer pageIndex, Integer pageSize) {
        List<shoes> list=new ArrayList<>();
        Connection conn=null;
        String sql="select * from shoes  limit ?,?";
        ResultSet rs = null;
        try {
            rs=super.executeQuery(sql,pageIndex,pageSize);
            while (rs.next()) {
                //循环添加对象到集合
                list.add(new shoes(rs.getInt("sid"),rs.getString("sname"),rs.getDouble("price"),rs.getInt("quantity"),rs.getString("image"),rs.getString("introduce")));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            DataBaseUtil.closeAll(conn,null,rs);
        }
        return list;
    }

再下面是servlet层的代码,注意这里的注解要和Ajax的路径一致


@WebServlet("/shoe_select")
public class shoe_select extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        UserService userService = new UserServiceimpl();
        PrintWriter out = response.getWriter();
        //********************************************************
        Integer pageIndex1=Integer.parseInt(request.getParameter("pageIndex"));
        System.out.println(pageIndex1);
        Integer pageIndex=request.getParameter("pageIndex")==null?1:Integer.parseInt(request.getParameter("pageIndex"));
        Integer pageSize=8;
        Integer totalCount = userService.getTotalCount();
        List<shoes> userList = userService.findByPage(pageIndex, pageSize);
        PageInfo<shoes> pageInfo=new PageInfo<>(pageIndex,pageSize,totalCount,userList);
        String str = JSON.toJSONString(pageInfo);
        System.out.println(str);
        out.print(str);
    }
}

下面就是在jsp里面用异步去查询数据


<script>
    //页面载入函数
    $(function(){
        //默认显示第1页
        myf('a');
    })
    //扩大作用域
    var pageIndex;
    var max=7;//定义100页
    //写一个方法专门控制分页
    function myf(type){
        if(type=='a'){
            //首页
            pageIndex=1;
        }
        else if(type=='b'){
            //上一页
            if(pageIndex>1){
                pageIndex--;
            }
            else{
                alert("兄die,已经是第一页了嘞");
            }
        }
        else if(type=='c'){
            //下一页
            if(pageIndex<max){
                pageIndex++;
            }
            else{
                alert("兄die,已经是最后一页了嘞");
            }
        }
        else{
            //末页
            pageIndex=max;
        }
        //ajax
        $.post("test", "pageIndex="+pageIndex, function(data) {
            $("tbody").empty();
            $(data.dataList).each(function (i,g) {
                var tr = $("<tr>\n" +
                    "          <td>" + g.sid+ "</td>\n" +
                    "          <td>" + g.introduce + "</td>\n" +
                    "          <td>" + g.quantity + "</td>\n" +
                    "          <td>" + g.price + "</td>\n" +
                    "          <td>" + g.sname + "</td>\n" +
                    "          <td>" + g.image + "</td>\n" +
                    "        </tr>");
                $("tbody").append(tr);
            });
        }, "json");
    }
</script>

<div>
    <a href="javascript:myf('a')">首页</a>&nbsp;
    <a href="javascript:myf('b')">上一页</a>&nbsp;
    <a href="javascript:myf('c')">下一页</a>&nbsp;
    <a href="javascript:myf('d')">末页</a>&nbsp;
</div>

注意这里的属性一定要和实体类对应上。最后一步就可以运行页面看效果了,


点击下一页的效果


 

 

希望能帮助到你,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值