因為項目當中用到分頁,界面用了jstl,本想用jstl給我分頁的,測試代碼如下
<%@ taglib uri="
<%@ taglib uri="
<%@ taglib uri="
<%@ page contentType="text/html; charset=gbk"%>
<html>
<body>
?<c:set value="8" var="ipage"/>
?<c:set value="${param.cpage}" var="cpage" scope="request"/>
?<c:if test="${empty sessionScope.allCount}">
?<sql:query var="rso">select * from test</sql:query>
?<c:set value="${rso.rowCount}" var="allCount" scope="session"/>
? </c:if>
?<sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}">
?select * from test
?</sql:query>
?<c:set value="${(allCount+ipage-1)/ipage}" var="allpage"/>
?<fmt:parseNumber value="${allpage}" integerOnly="true" var="allpage"/>
?xxx<c:out value="${allpage}"/><br>
?<c:forEach items="${rs.rows}" var="item">
?<c:out value="${item.name}"/>
?<c:out value="${item.password}"/><br>
?</c:forEach>
?? <c:if test="${cpage<=1}">
??? <c:set value="${cpage+1}" var="cpage"/>
?? </c:if>
?? <c:if test="${cpage>allpage}">
??? <c:set value="${allpage}" var="cpage"/>
?? </c:if>
? <A href="
http://localhost:8080/jstl/test.jsp?cpage=${cpage-1}">上一頁</A>
? <A href="
http://localhost:8080/jstl/test.jsp?cpage=${cpage}">當前頁</A>
? <A href="
http://localhost:8080/jstl/test.jsp?cpage=${cpage+1}">下一頁</A>
?<hr>
</body>
</html>
本以為這樣子比起用oracle里的rownum(如果更換數據庫還得改代碼),來的要好,因為我這里的是
?<sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}">
?select * from test
?</sql:query>
可是我看了他的源代碼,竟然它利用緩存,每次調用
<sql:query startRow="" maxRows="">它都會把select * from test的數據全部一次性查出得到一個result,再根據startRow,再調用result.next(),startRow次后才正式幫我們工作..
看來還是原始的方式速度要快一些..
.......進化出來的產物不一定先進