JSP中将按条件查询的结果集分页显示,只有第一页内容显示出来是什么问题

如果不是按条件查询,直接查询,例如:Select from job;我采用那个分页的代码,就可以成功。

如果按条件查询,例如:Select from job where jobname LIKE '%"+jname+"%'";后面有条件的这种查询,查询条件是我自己输入的参数,它就只能显示第一页的内容。我初学者,不懂。有懂的大神,可以帮帮我吗,这是我用的分页代码。
int intPageSize;
int intRowCount;
int intPageCount;
int intPage;
int i;
intPageSize=2;
String strPage;
strPage=request.getParameter("page");
if(strPage==null)
{
intPage=1;
}
else
{
intPage=Integer.parseInt(strPage);
if(intPage<1)intPage=1;
}

rs.last();
intRowCount=rs.getRow();
intPageCount=(intRowCount+intPageSize-1)/intPageSize;
if(intPage>intPageCount)
intPage=intPageCount;
if(intPageCount>0)
{
rs.absolute((intPage-1)*intPageSize+1);
//显示数据
i=0;
while(i<intPageSize&&!rs.isAfterLast())
{
%>
<tr align="center">
<td><%=rs.getString("resumeid") %></td>
<td><%=rs.getString("resumename") %></td>
<td><%=rs.getString("eid") %></td>
<td><%=rs.getString("resumeurl") %></td>
<td><%=rs.getString("attachment") %></td>
<td><%=rs.getString("resumetime") %></td>
</tr>
<% rs.next();
i++;
}
}
%>
</table>
<hr color="#999999">
<div align="center" >第<%=intPage %>页   共<%=intPageCount %>页   
<%
if(intPage<intPageCount)
{
%>
<a href="fenyetest.jsp?page=<%=intPage+1 %>">下一页</a>   
<%
}
if(intPage>1)
{
%>
<a href="fenyetest.jsp?page=<%=intPage-1 %>">上一页</a>
<%
}
%>

<%
rs.close();
addBean.closeStmt();
addBean.closeConn();
%>
我自己已经解决了问题。
问题出在有条件查询时,:Select from job where jobname LIKE '%"+jname+"%' 此处的jname是从客户端获得的,是我在之前的一个界面输入的值。当我点击下一页时,它运行时又要从客户端获得这个参数,而此时,就没有客户端输入的参数可以获得了。

所以解决办法就是,一开始把客户端输入的参数保存起来,以后每次换页时,不用再从客户端获取了(因为我们只会在一开始搜索的时候输入一次客户端的参数)我用session保存了客户端的参数,之后在分页显示时,直接从session里面获取就可以了,总而言之一句话,分页代码里面不可以出现request.getParameter()这句话。

第1个回答  2015-04-26
页面需要保存以下参数: 总行数:根据sql语句得到总行数 每页显示行数:设定值 当前页数:请求参数 页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数的行即可。

喻盟梓坳艺勺朴抹告戚安沅荫蝉诵孟幼髯略镤劲本回答被网友采纳
相似回答