发表于: 2019-12-11 23:39:33

2 1151


今天完成的事情:


继续完成limit分页


修改了下controller层代码


 @RequestMapping(value = "/AllPage",method = RequestMethod.GET)
//传入 当前页数数据   初始(defaultValue)为1
   public String AllPage (Model model , @RequestParam(value = "pageNow",defaultValue = "1")int pageNow){

logger.info(pageNow);

//        1个是从0起,查询10条数据         第2个是从10起,查询10
       List<Student> pagelist = ss.studentPage((pageNow-1)*10,10);

       logger.info(pagelist);
//        查询所有的页数
       int allRow = ss.selectCount();

//        定义一个  上一页
       int prePage;

//        如果当前页 减去1 大于 0     上一页等于当前页-1 (防止第一页再减一)
//        否则还是当前页
       if (pageNow - 1 > 0) {
prePage = pageNow - 1;
       } else {
prePage = pageNow;
       }

//        定义一个  每页显示的条数 为10
       int pageSize = 10;

//        最后一页    =     所有的条数  %  10 (求余数)
//        如果余数的值为0      所有的条数/10
//        如果余数的值不为0    所有的条数/10    +1

       int totalPages = allRow % pageSize == 0 ? allRow / pageSize : allRow / pageSize + 1;
//
//        (假设总页数为23   则运行后跳到第3页,      因为23就在第3页(每页显示10个))

//        定义一个下一页
       int nextPage;

//        如果当前页小于最终页       下一页 = 当前页+1     否则 下一页还等于当前页  (目的:到最后一页不动,返回当前页)
       if ( pageNow <totalPages) {
nextPage = pageNow+1;
       } else {
nextPage = pageNow ;
       }

//        当前页
       model.addAttribute("pageNow", pageNow);
       System.out.print(pageNow);
//        上一页
       model.addAttribute("prePage", prePage);
       System.out.print(prePage);
//        查询到的  x条起   查询10条学生数据
       model.addAttribute("pagelist", pagelist);
       System.out.print(pagelist);
//        下一页
       model.addAttribute("nextPage", nextPage);
       System.out.print(nextPage);
//        最后一页
       model.addAttribute("totalPages", totalPages);
       System.out.print(totalPages);

       return "allpages";
   }

}


我昨天controller层返回的是:     查询所有学员selectAll方法的主页面    allstudent.jsp




分页数据是需要再写一个jsp页面的


因此  新建了一个页面  allpages.jsp     用于分页数据返回视图     里面放查询到的分页数据


allpages.jsp

<%@page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>

<br>
你想添加用户吗? 请点击这里:<a href = "/student/add"  >添加用户</a>
</br>
<td>
<td>
<table align="center" border="1" cellspacing="0">
<tr>
<td>id</td>
<td>name</td>
<td>qq</td>
<td>type</td>
<td>time</td>
<td>stunum</td>
<td>daily</td>
<td>wish</td>
<td>senior</td>
<td>修改</td>
<td>删除</td>
</tr>
<%--//接收controller给出的model数据--%>
<%--c标签里封装了java循环语法--%>
<c:forEach items ="${pagelist}" var="Student">
<tr>
<td>${Student.id}</td>
<td>${Student.name}</td>
<td>${Student.qq}</td>
<td>${Student.type}</td>
<td>${Student.time}</td>
<td>${Student.stunum}</td>
<td>${Student.daily}</td>
<td>${Student.wish}</td>
<td>${Student.senior}</td>
<td><a href="/student/up/${Student.id}">修改</a></td>
<td><a href="/student/delete/${Student.id}">删除</a></td>
</tr>
</c:forEach>
</table>

<td><a href="/student/AllPage">首页</a></td>
<td><a href="/student/AllPage?pageNow=${prePage}">上一页</a></td>
<td><a href="/student/AllPage?pageNow=${nextPage}">下一页</a></td>
<td><a href="/student/AllPage?pageNow=${totalPages}">尾页</a></td>
<td>当前第${pageNow}</td>
<td>总共${totalPages}</td>
<br>
<form action="/student/AllPage">
<input type="text" name="pageNow">
 <input type="submit" value="go">
</form>
</body>
</html>




对比昨天的代码, 修改了以下部分


1.  c标签 循环的数据改为查询到的分页数据





2.  number  改成了  pageNow


错误


正确



这里也改了下   


错误


正确



为什么要改这个呢


因为number名称   无法传入参数 (@requestparam要求的参数为 pageNow  )


代码只能查询到第1页   第 2/3...页数据都没法查





再运行一遍( 忽略id,  没按顺序写,数据库里随便添加的)



第1页 



第2页



首页  上一页  下一页  尾页   输入跳转    都测试了  

都没问题



整理下分页跳转的逻辑把...


1.  请求链接传入参数     分页方法开始执行  

 

①根据 limit m,n 参数   得到具体数据

②查询所有页数

③根据前面两个内容    写出首页/上一页/下一页/尾页等逻辑



2. 把以上查询到的所有东西   传入jsp


(1)在jsp内显示   显示1查到得数据

(2)将1③得内容     作为实参   再传入到1里



明天计划的事情:


推进任务


收获:


分页遇到的问题都是逻辑和细节的问题

理清楚就好了


返回列表 返回列表
评论

    分享到