旅游网(5)-------------- 旅游线路的分页展示

旅游线路的分页展示

点击了不同的分类后,将来看到的旅游线路不一样的。通过分析数据库表结构,旅游线路表和分类表时一个多对一的关系。

image-20210906194446119

解决获取cid问题

header.html

var li = '<li><a href="route_list.html?cid='+data[i].cid+'">'+data[i].cname+'</a></li>';
 @Override
    public List<Category> findAll() {
        //1.从redis中查询,需要获取Jedis客户端
        //获取Jedis客户端
        Jedis jedis = JedisUtil.getJedis();
        //因为想要获得的数据具有顺序,所以使用sortedset排序查询
//        Set<String> category = jedis.zrange("category", 0, -1);
        //为了实现跳转问题,所以必须把分数也保存,传递
        //查询sortedset中的分数(cid)和值(cname)
        Set<Tuple> category = jedis.zrangeWithScores("category", 0, -1);


        //2.判断查询的集合是否为空
        List<Category> all = null;
        if (category == null || category.size() == 0){
            System.out.println("从数据库查询");
            //3.如果为空,需要从数据库查询,在将数据存入redis
            //从数据库查询
            all = categoryDao.findAll();
            //将集合数据存储到redis的名为category的key的sortedset里面去
            //sortedset里面的分数使用id
            for (int i = 0; i < all.size(); i++) {
                //cid分数,cname内容
                jedis.zadd("category",all.get(i).getCid(),all.get(i).getCname());
            }

        }else {
            System.out.println("从redis去查询");
            //访问的是category,而category又是set集合,但是序列化的时候拿到的是list集合
            //所以的把set集合里面的数据存储到list集合里面去,进行数据结构的统一
            all = new ArrayList<Category>();
            for(Tuple tuple:category){
                Category c = new Category();
                c.setCname(tuple.getElement());
                c.setCid((int)tuple.getScore());
                all.add(c);
            }
        }

        //4.如果不为空,缓存有数据。
        return all;
    }

取出cid(传递)

location有一个属性search:设置或返回从问号(?)开始的URL (查询部分)。

route_list.html

<script>
    //location有一个属性**search**:设置或返回从问号(?)开始的URL (查询部分)。
    $(function (){
        //获取cid
       var search = location.search;//?id=5
       var id = search.split("=")[1];//5
    });
</script>

根据id(cid)查询不同类别的旅游线路数据

分页展示

分析

image-20210906210119379

首先需要创建pageBean对象

客户端代码
全部代码
route_list.html
<script>
    //location有一个属性:search:设置或返回从问号(?)开始的URL (查询部分)。
    $(function (){
        //获取cid
        var search = location.search;//?id=5
        var cid = search.split("=")[1];//5
        //当页码加载完成后,调用load方法,发送ajax请求加载数据
        load(cid);
    });
    function load(cid,currentPage){
        //发送ajax请求,请求route/pageQuery,传递cid
        $.get("route/pageQuery",{cid:cid,currentPage:currentPage},function (pb){
            //解析pagebean数据,展示到页面上
            //1.分页工具条数的展示
            //展示总页码和总记录数
            $("#totalPage").html(pb.totalPage);
            $("#totalCount").html(pb.totalCount);
            /*
            <li><a href="">首页</a></li>
                        <li class="threeword"><a href="#">上一页</a></li>
                        <li><a href="#">1</a></li>
                        <li><a href="#">2</a></li>
                        <li><a href="#">3</a></li>
                        <li><a href="#">4</a></li>
                        <li><a href="#">5</a></li>
                        <li><a href="#">6</a></li>
                        <li><a href="#">7</a></li>
                        <li><a href="#">8</a></li>
                        <li><a href="#">9</a></li>
                        <li><a href="#">10</a></li>
                        <li class="threeword"><a href="javascript:;">下一页</a></li>
                        <li class="threeword"><a href="javascript:;">末页</a></li>
             */
            var lis = "";
            //上一页和首页
            //首页就是没有i的值,或者是i等于1
            var firstPage = '<li  οnclick="javascript:load('+cid+')"><a href="javascript:void(0)">首页</a></li>';
            //计算上一页的页码
            var beforeNum = pb.currentPage - 1;
            if (beforeNum <= 0){
                beforeNum = 1;
            }
            var beforePage = '<li οnclick="javascript:load('+cid+','+beforeNum+')" class="threeword"><a href="javascript:void(0)">上一页</a></li>';
            lis += firstPage;
            lis += beforePage;

            //展示10条分页页码
            /*
                1.一共展示10个页码,能够达到前5后4的效果
                2.如果前边不够5个,后边补齐10个
                3.如果后边不足4个,前边补齐10个
            */
            // 定义开始位置begin,结束位置 end
            var begin;//开始位置
            var end;//加结束位置
            //1.一共展示10个页码,能够达到前5后4的效果
            if (pb.totalPage < 10){
                //总页码不够10页
                begin = 1;
                end = pb.totalPage;
            }else {
                //总页码超过10页,达到前5后4的效果
                begin = pb.currentPage - 5;
                end = pb.currentPage + 4;
                //如果前面不够5个,后面补全10个
                if (begin < 1){
                    begin = 1;
                    end = begin + 9;
                }
                //如果后面不够4个,前面补全10个
                if (end > pb.totalPage){
                    end = pb.totalPage;
                    begin = end - 9;
                }

            }


            for (var i = begin; i <= end; i++) {
                //添加点击时的样式,实现选择该框时出现选中的结果
                var li;
                //判断当前页面是否等于i
                if(pb.currentPage == i){
                    //添加样式
                    var li = '<li class="curPage" οnclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
                }else {
                    //创建页码的li
                    // var li = '<li><a href="javascript:load('+cid+','+i+')">'+i+'</a>';
                    //这样修改后可以实现点击li实现跳转,只需要点击框就可以了,不然的话,必须得点击数字才可以
                    var li = '<li οnclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
                }
                //拼接字符串
                lis += li;
            }

            /*
            //展示全部分页页码
            for (var i = 1; i <= pb.totalPage; i++) {
                //添加点击时的样式,实现选择该框时出现选中的结果
                var li;
                //判断当前页面是否等于i
                if(pb.currentPage == i){
                    //添加样式
                    var li = '<li class="curPage" οnclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
                }else {
                    //创建页码的li
                    // var li = '<li><a href="javascript:load('+cid+','+i+')">'+i+'</a>';
                    //这样修改后可以实现点击li实现跳转,只需要点击框就可以了,不然的话,必须得点击数字才可以
                    var li = '<li οnclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
                }
                //拼接字符串
                lis += li;
            }
            */
            //尾页
            var lastPage = '<li οnclick="javascript:load('+cid+','+pb.totalPage+')" class="threeword"><a href="javascript:void(0)">末页</a></li>';
            //计算下一页的页码
            var nextNum = pb.currentPage + 1;
            if (nextNum > pb.totalPage){
                nextNum = pb.totalPage;
            }
            var nextPage = '<li  οnclick="javascript:load('+cid+','+nextNum+')" class="threeword"><a href="javascript:void(0)">下一页</a></li>';
            lis += nextPage;
            lis += lastPage;
            //将lis内容设置到ul
            $("#pageNum").html(lis);

            /*
            <li>
                <div class="img"><img src="images/04-search_03.jpg" alt=""></div>
                <div class="text1">
                    <p>【减100元 含除夕/春节出发】广州增城三英温泉度假酒店/自由行套票</p>
                    <br/>
                    <p>1-2月出发,网付立享¥1099/2人起!爆款位置有限,抢完即止!</p>
                </div>
                <div class="price">
                    <p class="price_num">
                        <span>&yen;</span>
                        <span>299</span>
                        <span>起</span>
                    </p>
                    <p><a href="route_detail.html">查看详情</a></p>
                </div>
            </li>
             */
            //2.列表数据展示
            var route_lis = "";
            for (var i = 0; i < pb.list.length; i++) {
                //获取JSON里面的list数组,
                // 因为其所有的商品信息都是封装在list里面,
                // 并且每一个索引里面都有一整个商品信息
                //如:{rid:1,rname:..,price:....}
                var route = pb.list[i];
                var li = '<li>\n' +
                    '                    <div class="img"><img src="'+route.rimage+'" style="width: 299px;" alt=""></div>\n' +
                    '                    <div class="text1">\n' +
                    '                        <p>'+route.rname+'</p>\n' +
                    '                        <br/>\n' +
                    '                        <p>'+route.routeIntroduce+'</p>\n' +
                    '                    </div>\n' +
                    '                    <div class="price">\n' +
                    '                        <p class="price_num">\n' +
                    '                            <span>&yen;</span>\n' +
                    '                            <span>'+route.price+'</span>\n' +
                    '                            <span>起</span>\n' +
                    '                        </p>\n' +
                    '                        <p><a href="route_detail.html">查看详情</a></p>\n' +
                    '                    </div>\n' +
                    '                </li>';
                route_lis += li;
            }
            //遍历完过后将route_li里面的li的内容添加进ul里面
            $("#route").html(route_lis);
            //scrollTo(xpos,ypos)方法实现,点击选择的页面时,跳转到网页的首部
            /*
                定义:把内容滚动到指定的坐标。
                xpos:必需。要在窗口文档显示区左上角显示的文档的x坐标。
                ypos:必需。 要在窗口文档显示区左上角显示的文档的y坐标。
             */
            //定位到页面顶部
            window.scrollTo(0,0);
        });
    }
</script>
页码
页码整体显示
<script>
    //location有一个属性:search:设置或返回从问号(?)开始的URL (查询部分)。
    $(function (){
        //获取cid
       var search = location.search;//?id=5
        var cid = search.split("=")[1];//5
        //发送ajax请求,请求route/pageQuery,传递cid
        $.get("route/pageQuery",{cid:cid},function (pb){
            //解析pagebean数据,展示到页面上
            //1.分页工具条数的展示
            //展示总页码和总记录数
            $("#totalPage").html(pb.totalPage);
            $("#totalCount").html(pb.totalCount);
            /*
            <li><a href="">首页</a></li>
                        <li class="threeword"><a href="#">上一页</a></li>
                        <li><a href="#">1</a></li>
                        <li><a href="#">2</a></li>
                        <li><a href="#">3</a></li>
                        <li><a href="#">4</a></li>
                        <li><a href="#">5</a></li>
                        <li><a href="#">6</a></li>
                        <li><a href="#">7</a></li>
                        <li><a href="#">8</a></li>
                        <li><a href="#">9</a></li>
                        <li><a href="#">10</a></li>
                        <li class="threeword"><a href="javascript:;">下一页</a></li>
                        <li class="threeword"><a href="javascript:;">末页</a></li>
             */
            var lis = "";
            //上一页和首页
            var firstPage = '<li><a href="">首页</a></li>';
            var beforePage = '<li class="threeword"><a href="#">上一页</a></li>';
            lis += firstPage;
            lis += beforePage;
            //展示分页页码
            for (var i = 1; i <= pb.totalPage; i++) {
                //创建页码的li
                var li = '<li><a href="#">'+i+'</a>';
                //拼接字符串
                lis += li;
            }
            var lastPage = '<li class="threeword"><a href="javascript:;">下一页</a></li>';
            var nextPage = '<li class="threeword"><a href="javascript:;">末页</a></li>';
            lis += nextPage;
            lis += lastPage;
            //将lis内容设置到ul
            $("#pageNum").html(lis);
            
            
            //2.列表数据展示
            ......
		});
    });
</script>
页面跳转功能

全部代码:

<script>
    //location有一个属性:search:设置或返回从问号(?)开始的URL (查询部分)。
    $(function (){
        //获取cid
        var search = location.search;//?id=5
        var cid = search.split("=")[1];//5
        //当页码加载完成后,调用load方法,发送ajax请求加载数据
        load(cid);
    });
    function load(cid,currentPage){
        //发送ajax请求,请求route/pageQuery,传递cid
        $.get("route/pageQuery",{cid:cid,currentPage:currentPage},function (pb){
            //解析pagebean数据,展示到页面上
            //1.分页工具条数的展示
            //展示总页码和总记录数
            $("#totalPage").html(pb.totalPage);
            $("#totalCount").html(pb.totalCount);
            /*
            <li><a href="">首页</a></li>
                        <li class="threeword"><a href="#">上一页</a></li>
                        <li><a href="#">1</a></li>
                        <li><a href="#">2</a></li>
                        <li><a href="#">3</a></li>
                        <li><a href="#">4</a></li>
                        <li><a href="#">5</a></li>
                        <li><a href="#">6</a></li>
                        <li><a href="#">7</a></li>
                        <li><a href="#">8</a></li>
                        <li><a href="#">9</a></li>
                        <li><a href="#">10</a></li>
                        <li class="threeword"><a href="javascript:;">下一页</a></li>
                        <li class="threeword"><a href="javascript:;">末页</a></li>
             */
            var lis = "";
            //上一页和首页
            //首页就是没有i的值,或者是i等于1
            var firstPage = '<li  οnclick="javascript:load('+cid+')"><a href="javascript:void(0)">首页</a></li>';
            //计算上一页的页码
            var beforeNum = pb.currentPage - 1;
            if (beforeNum <= 0){
                beforeNum = 1;
            }
            var beforePage = '<li οnclick="javascript:load('+cid+','+beforeNum+')" class="threeword"><a href="javascript:void(0)">上一页</a></li>';
            lis += firstPage;
            lis += beforePage;
            //展示分页页码
            for (var i = 1; i <= pb.totalPage; i++) {
                //添加点击时的样式,实现选择该框时出现选中的结果
                var li;
                //判断当前页面是否等于i
                if(pb.currentPage == i){
                    //添加样式
                    var li = '<li class="curPage" οnclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
                }else {
                    //创建页码的li
                    // var li = '<li><a href="javascript:load('+cid+','+i+')">'+i+'</a>';
                    //这样修改后可以实现点击li实现跳转,只需要点击框就可以了,不然的话,必须得点击数字才可以
                    var li = '<li οnclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
                }
                //拼接字符串
                lis += li;
            }
            var lastPage = '<li οnclick="javascript:load('+cid+','+pb.totalPage+')" class="threeword"><a href="javascript:void(0)">末页</a></li>';
            //计算下一页的页码
            var nextNum = pb.currentPage + 1;
            if (nextNum > pb.totalPage){
                nextNum = pb.totalPage;
            }
            var nextPage = '<li  οnclick="javascript:load('+cid+','+nextNum+')" class="threeword"><a href="javascript:void(0)">下一页</a></li>';
            lis += nextPage;
            lis += lastPage;
            //将lis内容设置到ul
            $("#pageNum").html(lis);

            /*
            <li>
                <div class="img"><img src="images/04-search_03.jpg" alt=""></div>
                <div class="text1">
                    <p>【减100元 含除夕/春节出发】广州增城三英温泉度假酒店/自由行套票</p>
                    <br/>
                    <p>1-2月出发,网付立享¥1099/2人起!爆款位置有限,抢完即止!</p>
                </div>
                <div class="price">
                    <p class="price_num">
                        <span>&yen;</span>
                        <span>299</span>
                        <span>起</span>
                    </p>
                    <p><a href="route_detail.html">查看详情</a></p>
                </div>
            </li>
             */
            //2.列表数据展示
            var route_lis = "";
            for (var i = 0; i < pb.list.length; i++) {
                //获取JSON里面的list数组,
                // 因为其所有的商品信息都是封装在list里面,
                // 并且每一个索引里面都有一整个商品信息
                //如:{rid:1,rname:..,price:....}
                var route = pb.list[i];
                var li = '<li>\n' +
                    '                    <div class="img"><img src="'+route.rimage+'" style="width: 299px;" alt=""></div>\n' +
                    '                    <div class="text1">\n' +
                    '                        <p>'+route.rname+'</p>\n' +
                    '                        <br/>\n' +
                    '                        <p>'+route.routeIntroduce+'</p>\n' +
                    '                    </div>\n' +
                    '                    <div class="price">\n' +
                    '                        <p class="price_num">\n' +
                    '                            <span>&yen;</span>\n' +
                    '                            <span>'+route.price+'</span>\n' +
                    '                            <span>起</span>\n' +
                    '                        </p>\n' +
                    '                        <p><a href="route_detail.html">查看详情</a></p>\n' +
                    '                    </div>\n' +
                    '                </li>';
                route_lis += li;
            }
            //遍历完过后将route_li里面的li的内容添加进ul里面
            $("#route").html(route_lis);
        });
    }
</script>

具体实现功能

  • 这些都依靠load方法
function load(cid,currentPage){
    //发送ajax请求,请求route/pageQuery,传递cid
    $.get("route/pageQuery",{cid:cid,currentPage:currentPage},function (pb){
        //解析pagebean数据,展示到页面上
        //1.分页工具条数的展示
        //展示总页码和总记录数
        $("#totalPage").html(pb.totalPage);
        $("#totalCount").html(pb.totalCount);
        /*
        <li><a href="">首页</a></li>
                    <li class="threeword"><a href="#">上一页</a></li>
                    <li><a href="#">1</a></li>
                    <li><a href="#">2</a></li>
                    <li><a href="#">3</a></li>
                    <li><a href="#">4</a></li>
                    <li><a href="#">5</a></li>
                    <li><a href="#">6</a></li>
                    <li><a href="#">7</a></li>
                    <li><a href="#">8</a></li>
                    <li><a href="#">9</a></li>
                    <li><a href="#">10</a></li>
                    <li class="threeword"><a href="javascript:;">下一页</a></li>
                    <li class="threeword"><a href="javascript:;">末页</a></li>
         */
        var lis = "";
        //上一页和首页
        //首页就是没有i的值,或者是i等于1
        var firstPage = '<li  onclick="javascript:load('+cid+')"><a href="javascript:void(0)">首页</a></li>';
        //计算上一页的页码
        var beforeNum = pb.currentPage - 1;
        if (beforeNum <= 0){
            beforeNum = 1;
        }
        var beforePage = '<li onclick="javascript:load('+cid+','+beforeNum+')" class="threeword"><a href="javascript:void(0)">上一页</a></li>';
        lis += firstPage;
        lis += beforePage;
        //展示分页页码
        for (var i = 1; i <= pb.totalPage; i++) {
            //添加点击时的样式,实现选择该框时出现选中的结果
            var li;
            //判断当前页面是否等于i
            if(pb.currentPage == i){
                //添加样式
                var li = '<li class="curPage" onclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
            }else {
                //创建页码的li
                // var li = '<li><a href="javascript:load('+cid+','+i+')">'+i+'</a>';
                //这样修改后可以实现点击li实现跳转,只需要点击框就可以了,不然的话,必须得点击数字才可以
                var li = '<li onclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
            }
            //拼接字符串
            lis += li;
        }
        var lastPage = '<li onclick="javascript:load('+cid+','+pb.totalPage+')" class="threeword"><a href="javascript:void(0)">末页</a></li>';
        //计算下一页的页码
        var nextNum = pb.currentPage + 1;
        if (nextNum > pb.totalPage){
            nextNum = pb.totalPage;
        }
        var nextPage = '<li  onclick="javascript:load('+cid+','+nextNum+')" class="threeword"><a href="javascript:void(0)">下一页</a></li>';
        lis += nextPage;
        lis += lastPage;
        //将lis内容设置到ul
        $("#pageNum").html(lis);

        /*
        <li>
            <div class="img"><img src="images/04-search_03.jpg" alt=""></div>
            <div class="text1">
                <p>【减100元 含除夕/春节出发】广州增城三英温泉度假酒店/自由行套票</p>
                <br/>
                <p>1-2月出发,网付立享¥1099/2人起!爆款位置有限,抢完即止!</p>
            </div>
            <div class="price">
                <p class="price_num">
                    <span>&yen;</span>
                    <span>299</span>
                    <span></span>
                </p>
                <p><a href="route_detail.html">查看详情</a></p>
            </div>
        </li>
         */
        //2.列表数据展示
        var route_lis = "";
        for (var i = 0; i < pb.list.length; i++) {
            //获取JSON里面的list数组,
            // 因为其所有的商品信息都是封装在list里面,
            // 并且每一个索引里面都有一整个商品信息
            //如:{rid:1,rname:..,price:....}
            var route = pb.list[i];
            var li = '<li>\n' +
                '                    <div class="img"><img src="'+route.rimage+'" style="width: 299px;" alt=""></div>\n' +
                '                    <div class="text1">\n' +
                '                        <p>'+route.rname+'</p>\n' +
                '                        <br/>\n' +
                '                        <p>'+route.routeIntroduce+'</p>\n' +
                '                    </div>\n' +
                '                    <div class="price">\n' +
                '                        <p class="price_num">\n' +
                '                            <span>&yen;</span>\n' +
                '                            <span>'+route.price+'</span>\n' +
                '                            <span></span>\n' +
                '                        </p>\n' +
                '                        <p><a href="route_detail.html">查看详情</a></p>\n' +
                '                    </div>\n' +
                '                </li>';
            route_lis += li;
        }
        //遍历完过后将route_li里面的li的内容添加进ul里面
        $("#route").html(route_lis);
    });
                                           
}
  • 点击某一页跳转
//展示分页页码
for (var i = 1; i <= pb.totalPage; i++) {
    //添加点击时的样式,实现选择该框时出现选中的结果
    var li;
    //判断当前页面是否等于i
    if(pb.currentPage == i){
        //添加样式
        var li = '<li class="curPage" onclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
    }else {
        //创建页码的li
        // var li = '<li><a href="javascript:load('+cid+','+i+')">'+i+'</a>';
        //这样修改后可以实现点击li实现跳转,只需要点击框就可以了,不然的话,必须得点击数字才可以
        var li = '<li onclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
    }
    //拼接字符串
    lis += li;
}
  • 上一页

  • 首页

//上一页和首页
//首页就是没有i的值,或者是i等于1
var firstPage = '<li  onclick="javascript:load('+cid+')"><a href="javascript:void(0)">首页</a></li>';
//计算上一页的页码
var beforeNum = pb.currentPage - 1;
if (beforeNum <= 0){
    beforeNum = 1;
}
var beforePage = '<li onclick="javascript:load('+cid+','+beforeNum+')" class="threeword"><a href="javascript:void(0)">上一页</a></li>';
  • 尾页

  • 下一页

//尾页
var lastPage = '<li onclick="javascript:load('+cid+','+pb.totalPage+')" class="threeword"><a href="javascript:void(0)">末页</a></li>';
//计算下一页的页码
var nextNum = pb.currentPage + 1;
if (nextNum > pb.totalPage){
    nextNum = pb.totalPage;
}
var nextPage = '<li  onclick="javascript:load('+cid+','+nextNum+')" class="threeword"><a href="javascript:void(0)">下一页</a></li>';
实现页码的折叠

image-20210907180920499

//展示10条分页页码
/*
    1.一共展示10个页码,能够达到前5后4的效果
    2.如果前边不够5个,后边补齐10个
    3.如果后边不足4个,前边补齐10个
*/
// 定义开始位置begin,结束位置 end
var begin;//开始位置
var end;//加结束位置
//1.一共展示10个页码,能够达到前5后4的效果
if (pb.totalPage < 10){
    //总页码不够10页
    begin = 1;
    end = pb.totalPage;
}else {
    //总页码超过10页,达到前5后4的效果
    begin = pb.currentPage - 5;
    end = pb.currentPage + 4;
    //如果前面不够5个,后面补全10个
    if (begin < 1){
        begin = 1;
        end = begin + 9;
    }
    //如果后面不够4个,前面补全10个
    if (end > pb.totalPage){
        end = pb.totalPage;
        begin = end - 9;
    }

}


for (var i = begin; i <= end; i++) {
    //添加点击时的样式,实现选择该框时出现选中的结果
    var li;
    //判断当前页面是否等于i
    if(pb.currentPage == i){
        //添加样式
        var li = '<li class="curPage" onclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
    }else {
        //创建页码的li
        // var li = '<li><a href="javascript:load('+cid+','+i+')">'+i+'</a>';
        //这样修改后可以实现点击li实现跳转,只需要点击框就可以了,不然的话,必须得点击数字才可以
        var li = '<li onclick="javascript:load('+cid+','+i+')"><a href="javascript:void(0)">'+i+'</a>';
    }
    //拼接字符串
    lis += li;
}
商品显示
/*
    <li>
        <div class="img"><img src="images/04-search_03.jpg" alt=""></div>
        <div class="text1">
            <p>【减100元 含除夕/春节出发】广州增城三英温泉度假酒店/自由行套票</p>
            <br/>
            <p>1-2月出发,网付立享¥1099/2人起!爆款位置有限,抢完即止!</p>
        </div>
        <div class="price">
            <p class="price_num">
                <span>&yen;</span>
                <span>299</span>
                <span></span>
            </p>
            <p><a href="route_detail.html">查看详情</a></p>
        </div>
    </li>
     */
    //2.列表数据展示
    var route_lis = "";
    for (var i = 0; i < pb.list.length; i++) {
        //获取JSON里面的list数组,
        // 因为其所有的商品信息都是封装在list里面,
        // 并且每一个索引里面都有一整个商品信息
        //如:{rid:1,rname:..,price:....}
        var route = pb.list[i];
        var li = '<li>\n' +
'                    <div class="img"><img src="'+route.rimage+'" style="width: 299px;" alt=""></div>\n' +
'                    <div class="text1">\n' +
'                        <p>'+route.rname+'</p>\n' +
'                        <br/>\n' +
'                        <p>'+route.routeIntroduce+'</p>\n' +
'                    </div>\n' +
'                    <div class="price">\n' +
'                        <p class="price_num">\n' +
'                            <span>&yen;</span>\n' +
'                            <span>'+route.price+'</span>\n' +
'                            <span></span>\n' +
'                        </p>\n' +
'                        <p><a href="route_detail.html">查看详情</a></p>\n' +
'                    </div>\n' +
'                </li>';
        route_lis += li;
    }
    //遍历完过后将route_li里面的li的内容添加进ul里面
    $("#route").html(route_lis);
滚动到页面顶部
//scrollTo(xpos,ypos)方法实现,点击选择的页面时,跳转到网页的首部
/*
    定义:把内容滚动到指定的坐标。
    xpos:必需。要在窗口文档显示区左上角显示的文档的x坐标。
    ypos:必需。 要在窗口文档显示区左上角显示的文档的y坐标。
 */
//定位到页面顶部
window.scrollTo(0,0);
服务器端代码

1.创建PageBean对象

2.RouteServlet

3.RouteService

4.RouteDao

1.PageBean对象
/**
 * 分页对象
 */
public class PageBean<T> {
    //数据流查询的数据:totalCount、list集合
    //pageSize、currentPage:是客户端提交的
    //totalPage:可以计算出来的,通过totalCount和pageSize

    private int totalCount;//总记录数
    private int totalPage;//总页数
    private int currentPage;//当前页码
    private int pageSize;//每页显示的条数

    private List<T> list;//每页显示的数据集合

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
}
2.RouteServlet
@WebServlet("/route/*")
public class RouteServlet extends BaseServlet {
    private RouteService routeService = new RouteServiceImpl();
    /**
     * 分页查询
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void pageQuery(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.接收参数
        //需要将currentPageStr转为int类型的网service里面传
        String currentPageStr = request.getParameter("currentPage");
        String pageSizeStr = request.getParameter("pageSize");
        String cidStr = request.getParameter("cid");

        //处理参数
        int cid = 0;//前面所获取的类别id
        if (cidStr != null && cidStr.length() > 0){
            cid = Integer.parseInt(cidStr);
        }
        int pageSize = 0;//每页显示条数,如果不传递,默认每页显示5条记录
        if (pageSizeStr != null && pageSizeStr.length() > 0){
            pageSize = Integer.parseInt(pageSizeStr);
        }else {
            pageSize = 5;
        }
        int currentPage = 0;//当前页码,如果不传递,则默认为第一页
        if (currentPageStr != null && currentPageStr.length() > 0){
            currentPage = Integer.parseInt(currentPageStr);
        }else {
            currentPage = 1;
        }
        //3.调用service查询PageBean对象
        PageBean<Route> pb = routeService.pageQuery(cid, currentPage, pageSize);
        //4.将pageBean对象序列化为json,返回
        writeValue(pb,response);
    }

}
3.RouteService
public interface RouteService {
    /**
     * 根据类别进行分页查询
     * @param cid
     * @param currentPage
     * @param pageSize
     * @return
     */
    public PageBean<Route> pageQuery(int cid,int currentPage,int pageSize);
}
public class RouteServiceImpl implements RouteService {
    RouteDao routeDao = new RouteDaoImpl();
    @Override
    public PageBean<Route> pageQuery(int cid, int currentPage, int pageSize) {
        //封装一个PageBean对象,并将这个对象返回
        //数据流查询的数据:totalCount、list集合
        //pageSize、currentPage:是客户端提交的
        //totalPage:可以计算出来的,通过totalCount和pageSize
        PageBean<Route> pb = new PageBean<Route>();
        //设置当前页
        pb.setCurrentPage(currentPage);
        //设置每页显示的条数
        pb.setPageSize(pageSize);
        //设置总记录数
        int totalCount = routeDao.findTotalCount(cid);
        pb.setTotalCount(totalCount);
        //设置当前页显示的数据集合
        //开始的记录数
        int start = (currentPage - 1)*pageSize;
        List<Route> list = routeDao.findByPage(cid,start,pageSize);
        pb.setList(list);
        //设置总页数 = 总记录数/每页显示条数
        int totalPage = totalCount % pageSize == 0 ? totalCount/pageSize : (totalCount/pageSize)+1;
        pb.setTotalPage(totalPage);

        return pb;
    }
}
4.RouteDao
public interface RouteDao {
    /**
     * 根据cid查询总记录数
     */
    public int findTotalCount(int cid);
    /**
     * 根据cid、start、pageSize查询当前页的数据集合,start代表从哪里开始,因为SQL
     * 里面的limit ?,? ,第一个?:从哪一个记录数开始
     */
    public List<Route> findByPage(int cid,int start,int pageSize);
}
public class RouteDaoImpl implements RouteDao {
    //使用template去执行sql
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public int findTotalCount(int cid) {
        String sql = "select count(*) from tab_route where cid = ?";
        //返回一个Integer.class,再去给一个cid的参数
        return template.queryForObject(sql,Integer.class,cid);
    }

    @Override
    public List<Route> findByPage(int cid, int start, int pageSize) {
        String sql = "select * from tab_route where cid = ? limit ? , ?";
        return template.query(sql,new BeanPropertyRowMapper<>(Route.class),cid,start,pageSize);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
element-table 是一个基于 Vue.js 的表格组件,可以用来展示数据并进行分页。以下是一个简单的示例: 首先,我们需要在 Vue.js 中引入 element-ui 和 element-table 组件: ``` import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import { Table, TableColumn } from 'element-ui' Vue.use(ElementUI) Vue.component(Table.name, Table) Vue.component(TableColumn.name, TableColumn) ``` 然后,我们可以在模板中使用 element-table 组件来展示数据并进行分页: ``` <template> <div> <el-table :data="tableData" :default-sort="{prop: 'date', order: 'descending'}"> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <el-pagination v-if="total > 0" :current-page.sync="currentPage" :page-size="pageSize" layout="total, sizes, prev, pager, next" :total="total" :page-sizes="[10, 20, 30, 40]" @current-change="handleCurrentChange" @size-change="handleSizeChange"> </el-pagination> </div> </template> <script> export default { data() { return { tableData: [], currentPage: 1, pageSize: 10, total: 0 } }, methods: { fetchData() { // 发起请求获取数据 // ... // 更新 tableData 和 total this.tableData = [...] this.total = ... }, handleCurrentChange(currentPage) { this.currentPage = currentPage this.fetchData() }, handleSizeChange(pageSize) { this.pageSize = pageSize this.fetchData() } }, mounted() { this.fetchData() } } </script> ``` 在上面的示例中,我们通过 el-table 组件来展示数据,通过 el-pagination 组件来实现分页功能。其中,tableData 是通过请求后端接口获取的数据,total 表示数据总数,currentPage 和 pageSize 分别表示当前页码和每页显示的数据条数。当用户切换页码或每页显示的数据条数时,会触发 handleCurrentChange 和 handleSizeChange 方法,重新获取数据并更新 tableData 和 total。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值