在下面代码中显示返回的“allStaList”,其中有600多条数据,显示时间需等待16秒左右,有什么好的处理方法吗?
<logic:notEmpty name="staDisplayForm" property="allStaList">
<logic:iterate id="sta" indexId="index" name="staDisplayForm" property="allStaList">
  <%
String co = "";//行间颜色
if ((index%2) == 0) co = "#D0E4EF";
else co = "#FFFFFF";
  %>
  <tr bgcolor=<%=co %> align="center">
<td><bean:write name="sta" property="stName"/></td>
<td><bean:write name="sta" property="strStaType"/></td>
<td><bean:write name="sta" property="district"/></td>
<td><bean:write name="sta" property="jd"/></td>
<td><bean:write name="sta" property="wd"/></td>
<td><c:choose>
<c:when test="${sta.isShow == 1}">
<input type="checkbox" onclick="UpdateSetup(this)" value="1_<bean:write name='sta' property='stId'/>" checked="checked"/>
</c:when>
<c:otherwise><input type="checkbox" onclick="UpdateSetup(this)" value="1_<bean:write name='sta' property='stId'/>" /></c:otherwise>
</c:choose></td>
<td><c:choose>
<c:when test="${sta.isShowRep == 1}">
<input type="checkbox" onclick="UpdateSetup(this)" value="2_<bean:write name='sta' property='stId'/>" checked="checked"/>
</c:when>
<c:otherwise><input type="checkbox" onclick="UpdateSetup(this)" value="2_<bean:write name='sta' property='stId'/>"/></c:otherwise>
</c:choose></td>
  </tr>
</logic:iterate>
</logic:notEmpty>

解决方案 »

  1.   

    用ajax,先打开页面再异步加载上去``用户就不会坐在那看着白的一片了
      

  2.   

    allStaList中有600条数据?
    难道页面显示中没有分页?
      

  3.   

    600 余条数据全部加载进来,可以这么想吧,有多少人会一条一条地全部看完呢?
    也许看个十几条就关掉,如果是这样的话还有 500 多条加载进来完全是无用功。
    所以就应该采用分页。大数量的分页应采用 SQL 分页形式,也就是说第 1 页时只选第 1~20 条记录,
    当点下一页或第 2 页时,再重新查询数据库,这时使用 SQL 选取第 21~40 条
    记录。
      

  4.   

    如果学过ajax当然用ajax好咯 不然还是用分页吧
      

  5.   

    分页,数据库支持很简单(hibernate、jpa的query都支持)
      

  6.   

    1,servlet init时数据加载到内存
    2,在js里利用ajax
    3, 利用分页,客户端请求的时候可以不一次显示全部数据
    比如一次请求传2页数据,1页数据hidden
      

  7.   

    做索引或者优化你的sql........才600多行就这样,绝对是后台代码或者数据库设计的问题
    一页5000条的分页都做过,也没你那样的