jsp EL表达式结合JSTL标准标签实现分页

<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql_rt" %>
<%@taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt"%>
<html>
<head>
<title>使用SQL标签</title>
</head>

<body bgcolor="white">
<c:set var="noOfRows" value="10" />
<sql:setDataSource driver =
"sun.jdbc.odbc.JdbcOdbcDriver" url =
"jdbc:odbc:accp" user="sa" password="" var="conn"/>
<c:if test="${custList == null}">
<sql:query var="custList" scope="session"
sql="SELECT * FROM employee ORDER BY LName"
dataSource="${conn}"/>
</c:if>
<c:choose>
<c:when test="${custList.rowCount == 0}">
此处不再有其他客户...
</c:when>
<c:otherwise>
<b>以下是客户列表:</b>
<p>
<table border="1">
<th>姓氏</th>
<th>名字</th>
<th>年龄</th>
<c:forEach items="${custList.rows}" var="row"
begin="${param.start}" end="${param.start +
noOfRows - 1}">
<tr>
<td><c:out value="${row.LName}" /></td>
<td><c:out value="${row.FName}" /></td>
<td><c:out value="${row.job_id}" /></td>
</tr>
</c:forEach>
</table>
</c:otherwise>
</c:choose>
<p>
<c:choose>
<c:when test="${param.start > 0}">
<a href="foreachexample.jsp?start=<c:out
value="${param.start - noOfRows}" />">
上一页</a>
</c:when>
<c:otherwise>
上一页
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${param.start + noOfRows <
custList.rowCount}">
<a href="foreachexample.jsp?start=<c:out
value="${param.start + noOfRows}" />">
下一页</a>
</c:when>
<c:otherwise>
下一页
</c:otherwise>
</c:choose>
共${custList.rowCount}条记录&nbsp;
共 <fmt:formatNumber type="number" value="${custList.rowCount%noOfRows==0?custList.rowCount/noOfRows:(custList.rowCount%noOfRows>4?(custList.rowCount/noOfRows):(custList.rowCount/noOfRows+1))}" maxFractionDigits="0"/> 页 &nbsp;

第 <fmt:formatNumber type="number" value="${(param.start%noOfRows==0?param.start/noOfRows:(param.start%noOfRows>4?(param.start/noOfRows):(param.start/noOfRows+1)))+1}" maxFractionDigits="0"/> 页
</body>
</html>

说明:这里使用到了标准标签库中SQL标签去查询数据记录。

使用条件标签判断分页中上下页的是否链接。使用EL表达式显示总记录数,<c:set var="noOfRows" value="10" />用来设置每页的显示记录数。通过总记录数和每页记录数来计算总页数。

因为EL表达式中‘/’结果是实际的浮点数,而不是整除,也没有函数来完成取整,这里就结合格式化标签<fmt:formatNumber type="number" value="${custList.rowCount%noOfRows==0?custList.rowCount/noOfRows:(custList.rowCount%noOfRows>4?(custList.rowCount/noOfRows):(custList.rowCount/noOfRows+1))}" maxFractionDigits="0"/>来完成格式化取整,maxFractionDigits="0"表示保留0位小数,即取整,但是这的取整也只是四舍五入,所以又给计算页数带来困难,

最后我通过${custList.rowCount%noOfRows==0?custList.rowCount/noOfRows:(custList.rowCount%noOfRows>4?(custList.rowCount/noOfRows):(custList.rowCount/noOfRows+1))}两个条件表达式嵌套完成页数计算

用同样的方法实现计算第几页的目的

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zp8126

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

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

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

打赏作者

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

抵扣说明:

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

余额充值