发表于: 2019-12-11 23:39:33
2 1154
今天完成的事情:
继续完成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里
明天计划的事情:
推进任务
收获:
分页遇到的问题都是逻辑和细节的问题
理清楚就好了
评论