开源俱乐部

开源框架
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

jstl分页显示的思考

Posted on 2006-07-26 17:17 HandSoft 阅读(916) 评论(0)  编辑  收藏
因为项目当中用到分页,界面用了jstl,本想用jstl给我分页的,测试代码如下

<%@ taglib uri="
http://java.sun.com/jsp/jstl/core " prefix="c"%>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/fmt " prefix="fmt"%>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/sql " prefix="sql"%>
<%@ 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次后才正式帮我们工作..
还有hibernate也差不多,也是把数据全查出放在缓存里的,,

看来还是原始的方式速度要快一些..
.......进化出来的产物不一定先进


只有注册用户登录后才能发表评论。


网站导航: