读书人

JSP分页有关问题~哪位高手能帮帮小弟我

发布时间: 2011-12-27 22:22:54 作者: rapoo

JSP分页问题~谁能帮帮我啊? 在线等结果!!
小弟今天写了个JSP分页 但是第二页显示的还是和第一页一样的记录 谁能帮我看看怎么回事啊?
<HTML>
   <HEAD>
<link href= "CSS/styles_content.css " rel= "stylesheet " type= "text/css "/>
   </HEAD>
<body>
<form action= "/Offic/depe.do " method= "post ">
<table width= "95% " align= "center " cellpadding= "4 " cellspacing= "1 " bgcolor= "#859CAE " class= "page ">
<tr bgcolor= "#F5F7FA ">
<td height= "16 " align= "center " bgcolor= "#E6E9EF " class= "page "> <b> 部门名称 </b> </td>
<td height= "16 " align= "center " bgcolor= "#E6E9EF " class= "page "> <b> 上级部门 </b> </td>
<td height= "16 " align= "center " bgcolor= "#E6E9EF " class= "page "> <b> 部门电话 </b> </td>
<td height= "16 " align= "center " bgcolor= "#E6E9EF " class= "page "> <b> 部门备注 </b> </td>
</tr>
<%
int i = 0;
int ipage=5;//分页单位
int allpage;//总页数
int pages; //接受的页码变量
int cpage =1; //当前页
int spage; //开始页
int allCol=0;
Vector v = null;
int DEPID;
String DEPNAME;
int UPDEPID;
String DEPTEL;
String ADDITION;

String sql = "select COUNT(*) from DEPARTMENT_TABLE ";
ConnectionPooling cp = new ConnectionPooling();
cp.getStmt();
ResultSet pagers=cp.execQuery(sql);
while(pagers.next()){
allCol=pagers.getInt(1);
System.out.println(allCol);
}
//获得总页面数
allpage = (int)Math.ceil((allCol + ipage-1) / ipage);
//判断参数pages是否空
if (request.getParameter( "pages ")==null){


pages=1;
}else{
pages = new Integer(request.getParameter( "pages ")).intValue();
System.out.println(pages);
}
//判断当前页
if(pages > allpage || pages == 0){
cpage = 1;
}else{
cpage = pages;
}
//判断起始页
String Sqll= "select DEPID,DEPNAME,UPDEPID,DEPTEL,ADDITION from DEPARTMENT_TABLE where DEPID not in (select DEPID from DEPARTMENT_TABLE where rownum <= "+(cpage-1)*ipage+ ")and rownum <= "+ipage+ " order by DEPID desc ";
System.out.println(Sqll);
ResultSet rs=cp.execQuery(Sqll);
while (rs.next()){
DEPID=rs.getInt( "DEPID ");

DEPNAME=rs.getString( "DEPNAME ");

UPDEPID=rs.getInt( "UPDEPID ");

DEPTEL=rs.getString( "DEPTEL ");

ADDITION=rs.getString( "ADDITION ");
System.out.println( "pages= "+pages);


%>

<tr bgcolor= "#F5F7FA ">
<td height= "16 " align= "center " bgcolor= "#F5F7FA " class= "page "> <%=DEPNAME%> </td>
<td height= "16 " align= "center " bgcolor= "#F5F7FA " class= "page "> <%=UPDEPID%> </td>
<td height= "16 " align= "center " bgcolor= "#F5F7FA " class= "page "> <%=DEPTEL%> </td>
<td height= "16 " align= "center " bgcolor= "#F5F7FA " class= "page "> <%=ADDITION%> </td>
</tr>
<%} %>
<tr bgcolor= "#F5F7FA ">
<td colspan= "4 " height= "16 " align= "right " bgcolor= "#E6E9EF " class= "page ">
条记录共 <%= allpage %> 页
<% if (cpage> 1) { %>


<a href= "detpshow.jsp?pages= <%= cpage-1 %> "> 上页 </a>
<% } if (cpage <allpage) { %>
<a href= "detpshow.jsp?pages= <%= cpage+1 %> "> 下页 </a>
<% } %> / <% for (i=1;i <=allpage;i++) { if (i != pages) {%> <a href= "detpshow.jsp?pages= <%= i %> "> <%= i %> </a> <% }} %>
</td>
</tr>
</table>
</form>
   </body>
</HTML>


[解决办法]
参考一下这个:
<div class= "descr "> welcome to come here </div>
<%
int countPerPage=10;//每页显示条数
int i=1,totalCount=0;
sql = "select count(*) from flm_gb " ;
rs = statement.executeQuery(sql) ;
while(rs.next())
totalCount=rs.getInt(1);
int pageCount=(totalCount+countPerPage-1)/countPerPage;

sql= "SELECT * FROM flm_gb order by id desc; ";
rs=statement.executeQuery(sql);
rmeta = rs.getMetaData();
numColumns=rmeta.getColumnCount();
String pages = request.getParameter( "page ") ;
int pageInt=1;
i=1;
if(pages==null){}else{pageInt = Integer.parseInt(pages);}
while(i <=countPerPage*(pageInt-1)&&rs.next()){i++;}

i=0;
while(rs.next()&&i <countPerPage) {
i++;
%>
<code> <%=rs.getString( "id ")%> .  <b> <%=dohtm1(rs.getString( "name "))%> : </b>    <a href= "# " title= " <%=dohtm1(rs.getString( "address "))%> "> 联系方式 </a>    <a href= "# "title= " <%=rs.getString( "ip ")%> "> IP </a>    <a href= "# "title= " <%=rs.getString( "date ")%> "> 时间 </a> <br /> <%=dohtm1(rs.getString( "content "))%> <%if(rs.getString( "reply ")!=null){ %> <cite> <%=rs.getString( "reply ")%> </cite> <%}%> </code>
<%}%>
<div align= "right "> <font color= "#FF0000 "> <%=pageInt%> </font> / <%=pageCount%>   <%=countPerPage%> 条/页 共 <%=totalCount%> 条 转到第
<%
for(int j=1;j <=pageCount;j++){
if(j!=pageInt){
%>
<a href= "guestbook.jsp?page= <%=j%> "> <%=j%> </a>
<%
}else{
%>
<%=j%>
<%
}
}
%>
   </div>
</div>
[解决办法]
select DEPID from DEPARTMENT_TABLE where rownum <= "+(cpage-1)*ipage+ ")and rownum <= "+ipage+ " order by DEPID desc

这句你的rownum小于(cpage-1)*ipage 又小于你的ipage(这个完全没必要吧?)
你就把你的SQL子查询语句改成
select DEPID from DEPARTMENT_TABLE where rownum <= "+(cpage-1)*ipage+ ")order by DEPID desc


试下
呵呵~本人没上机验证,不一定正确哦~请见谅
[解决办法]
个人觉得这里世是问题所在:
"select DEPID from DEPARTMENT_TABLE where rownum <= "+(cpage-1)*ipage
建议改写成:
"select DEPID from DEPARTMENT_TABLE where rownum <= "+(cpage-1)*ipage + "order by DEPID DESC "
试一试。
还有,建议不要在jsp页面写这么复杂的查询,弄得页面很乱。可以用一个Servlet查询,Servlet查询后将结果传递给jsp页面,由jsp页面负责显示。

读书人网 >Java Web开发

热点推荐