收藏排行榜分页查询功能
需求分析
当用户需要查询当前网站那些旅游线路被收藏更多次或者更热门时,我们可以通过点击“收藏排行榜”导航栏超链接完成根据旅游线路表中收藏次数倒序查询数据,并将查询结果展示在favoriterank.jsp收藏排行榜页面
步骤分析
前端 点击header.jsp页面收藏排行榜超链接,因为是查询收藏的旅游线路并基于收藏次数倒序排序,所以请求到旅游线路模块RouteServlet。请求地址可以是:route?method=findRouteListRank&pageNumber=1 后端 web 1定义分页查询收藏排行榜方法 findRouteListRank(){ 1接收分页请求参数 2指定每页查询记录数 3调用service查询分页列表数据 4将查询结果PageBean放入request域对象中 5请求转发到favoriterank.jsp页面 } service 定义分页查询收藏排行榜方法 findRouteListRank(){ 1查询满足条件的总记录数 2构建PageBean对象 3调用dao层,查询当前页列表数据,并赋予PageBean属性 4设置分页工具条起始值和结束值 5将封装结果PageBean返回 } dao 1查询满足添加的总记录数 2查询当前页列表数据
相应实现代码
1、前端header.jsp页面
$(function () { var url="category"; var params={"method":"findAllCategory"}; $.post(url,params,function (data) { var categoryHtml="<li class=\"nav-active\"><a href=\"index.html\">首页</a></li>"; $.each(data,function (index,ele) { categoryHtml+="<li><a href=\"route?method=findRouteListByCid&cid="+ele.cid+"&pageNumber=1\">"+ele.cname+"</a></li>"; }); //收藏排行榜超链接请求后端RouteServlet查询分页列表数据 categoryHtml+="<li><a href=\"route?method=findRouteListRank&pageNumber=1\">收藏排行榜</a></li>"; $("#categoryUI").html(categoryHtml); },"json"); });
2、后端代码
web RouteServlet.java文章源自JAVA秀-https://www.javaxiu.com/933.html
/** * 分页查看收藏排行榜 * @param request * @param response * @throws ServletException * @throws IOException */ public void findRouteListRank(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1接收分页请求参数 当前页 int pageNumber = Integer.parseInt(request.getParameter("pageNumber")); // 2指定每页查询记录数 int pageSize = 8; // 3调用service查询分页列表数据 RouteService routeService = new RouteService(); PageBean<Route> pb = routeService.findRouteListRank(pageNumber,pageSize); // 4将查询结果PageBean放入request域对象中 request.setAttribute("pb",pb); // 5请求转发到favoriterank.jsp页面 request.getRequestDispatcher("/favoriterank.jsp").forward(request,response); }
service文章源自JAVA秀-https://www.javaxiu.com/933.html
/** * 分页查看收藏排行榜 */ public PageBean<Route> findRouteListRank(int pageNumber, int pageSize) { // 1查询满足条件的总记录数 RouteDao dao = new RouteDao(); int totalCount = dao.findRouteCountRank(); // 2构建PageBean对象 PageBean<Route> pb = new PageBean<>(pageNumber,pageSize,totalCount); // 3调用dao层,查询当前页列表数据,并赋予PageBean属性 int startIndex = pb.getStartIndex(); List<Route> list = dao.findRouteListRank(startIndex,pageSize); pb.setData(list); // 4设置分页工具条起始值和结束值 int[] ints = PageUtils.pagination(pageNumber, pb.getTotalPage()); pb.setStart(ints[0]); pb.setEnd(ints[1]); // 5将封装结果PageBean返回 return pb; }
dao文章源自JAVA秀-https://www.javaxiu.com/933.html
/** * 查询满足条件总记录数 * @return */ public int findRouteCountRank() { //基于jdbcTemplate查询数据 JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); String sql="select count(*) from tab_route"; return template.queryForObject(sql,int.class); } /** * 基于收藏次数倒序分页查询旅游线路列表数据 * @param startIndex * @param pageSize * @return */ public List<Route> findRouteListRank(int startIndex, int pageSize) { //基于jdbcTemplate查询数据 JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); //基于收藏次数倒序分页查询旅游线路列表数据 String sql="select * from tab_route order by count desc limit ?,?"; return template.query(sql,new BeanPropertyRowMapper<>(Route.class),startIndex,pageSize); }
3、前端favoriterank.jsp展示数据代码
<%--展示列表数据div--%> <div class="list clearfix"> <ul> <%--循环遍历展示列表数据--%> <%--varStatus属性解释: varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。就拿varStatus=“status”来说, 事实上定义了一个status名的对象作为varStatus的绑定值。 该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素:${status.count} 常用数据如下: ${status.index} 输出行号,从0开始 ${status.count} 输出行号,从1开始 --%> <c:forEach items="${pb.data}" var="route" varStatus="status"> <li> <span class="num one">${pb.startIndex+status.count}</span> <a href="route_detail.html"><img src="${route.rimage}" alt=""></a> <h4><a href="route_detail.html">${route.rname}</a></h4> <p> <b class="price">¥<span>${route.price}</span>起</b> <span class="shouchang">已收藏${route.count}次</span> </p> </li> </c:forEach> </ul> </div> <%--分页工具条div--%> <div class="pageNum"> <ul> <li><a href="route?method=findRouteListRank&pageNumber=1">首页</a></li> <%--判断当前页是否是第一页,如果是第一页,上一页按钮禁用--%> <c:if test="${pb.pageNumber>1}"> <li class="threeword"><a href="route?method=findRouteListRank&pageNumber=${pb.pageNumber-1}">上一页</a></li> </c:if> <c:if test="${pb.pageNumber<=1}"> <li class="threeword"><a href="javaScript:void(0)">上一页</a></li> </c:if> <c:forEach begin="${pb.start}" end="${pb.end}" step="1" var="num"> <%--当前页页码背景高亮展示--%> <c:if test="${pb.pageNumber==num}"> <li style="background-color: yellow"><a href="route?method=findRouteListRank&pageNumber=${num}">${num}</a></li> </c:if> <c:if test="${pb.pageNumber!=num}"> <li><a href="route?method=findRouteListRank&pageNumber=${num}">${num}</a></li> </c:if> </c:forEach> <%--判断当前页是否是最后一页,如果是最后一页,下一页按钮禁用--%> <c:if test="${pb.pageNumber<pb.totalPage}"> <li class="threeword"><a href="route?method=findRouteListRank&pageNumber=${pb.pageNumber+1}">下一页</a></li> </c:if> <c:if test="${pb.pageNumber>=pb.totalPage}"> <li class="threeword"><a href="javaScript:void(0)">下一页</a></li> </c:if> <li class="threeword"><a href="route?method=findRouteListRank&pageNumber=${pb.totalPage}">末页</a></li> </ul> </div>文章源自JAVA秀-https://www.javaxiu.com/933.html
继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html

资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
评论