**分页
servlet**
public void showTeaccher(HttpServletRequest req, HttpServletResponse resp) throws Exception {
IAdminDao iad = new AdminImpl();
List list = iad.selectAllTeacher(); // 获得要显示的集合
String strNum = req.getParameter(“pageNum”); // 接受分页页面传递过来的页面数
int pageNum = 0 ; // 表示当前要显示的页面
int maxPage = 0; // 最大页
int pageCount = list.size(); // 得到查询出来的所有总数据的总数目
// 如果是第一次执行,就会接收不到数据
if (strNum == null){
strNum = "0";
}else {
// 接受到了用户惦记的第(pageNum)页
pageNum = Integer.parseInt(strNum);
}
// 计算要分多少页
if (pageCount%3 == 0){
maxPage = pageCount/3 ;
}else {
maxPage = pageCount/3 + 1;
}
req.setAttribute("maxPage",maxPage);
req.setAttribute("pageNum",pageNum);
req.setAttribute("list",list);
req.getRequestDispatcher("showTeacher.jsp").forward(req,resp);
}
**
jsp页面
**
教师列表
教师编号 教师姓名 教师密码
<c:forEach var=“n” items="
l
i
s
t
"
v
a
r
S
t
a
t
u
s
=
"
s
"
b
e
g
i
n
=
"
{list}" varStatus="s" begin="
list"varStatus="s"begin="{pageNum*3}" end="
(
p
a
g
e
N
u
m
+
1
)
∗
3
−
1
"
>
<
t
r
>
<
t
d
>
{(pageNum+1)*3-1}"> <tr> <td>
(pageNum+1)∗3−1"><tr><td>{n.teacherId}
n
.
t
e
a
c
h
e
r
N
a
m
e
<
/
t
d
>
<
t
d
>
{n.teacherName}</td> <td>
n.teacherName</td><td>{n.teacherPassword}
</c:forEach >
首页
<c:if test="
p
a
g
e
N
u
m
>
0
"
>
<
a
h
r
e
f
=
"
F
e
n
y
e
S
e
r
v
l
e
t
?
p
a
g
e
N
u
m
=
{pageNum>0}"> <a href="FenyeServlet?pageNum=
pageNum>0"><ahref="FenyeServlet?pageNum={pageNum-1}">上一页
</c:if>
<c:if test="
p
a
g
e
N
u
m
=
=
0
"
>
上
一
页
<
/
c
:
i
f
>
<
c
:
i
f
t
e
s
t
=
"
{pageNum == 0}"> 上一页 </c:if> <c:if test="
pageNum==0">上一页</c:if><c:iftest="{pageNum<maxPage-1}">
下一页
</c:if>
<c:if test="
p
a
g
e
N
u
m
=
=
m
a
x
P
a
g
e
−
1
"
>
下
一
页
<
/
c
:
i
f
>
<
a
h
r
e
f
=
"
F
e
n
y
e
S
e
r
v
l
e
t
?
p
a
g
e
N
u
m
=
{pageNum == maxPage-1}"> 下一页 </c:if> <a href="FenyeServlet?pageNum=
pageNum==maxPage−1">下一页</c:if><ahref="FenyeServlet?pageNum={maxPage-1}">尾页
首页序号为0,尾页序号为最大值,即集合的长度-1(list.size() - 1)
上一页序号为当前序号-1(前提是当前序号>0)
当当前序号为0时,上一页应不在有任何请求
下一页序号为当前序号+1(前提是当前序号<list.size() - 1)
当当前序号为(list.size() - 1)时。下一页应不再有任何请求
优缺点:逻辑简单,易书写
复用性差,再别的情形下使用可能需要修改大量代码