请高手看看是不是我的bean有什么问题,我看了好久,觉得应该没有问题,但是不知道为什么从数据库里取得记录总是不对,Vector item 取出来的记录对,但是不知道为什么到从item再存到Vector queryResult时就不对了,queryResult得数组每插一个item同时又把前面已经插进去的内容覆盖了,最后提出来的内容是:显示了10遍第10条的记录。bean的内容
----------------------------------------------------------------------------------
/*
* 创建日期 2006-5-14
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package job;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;/**
* @author dy
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public class Cpage {
private Connection con;
private int maxPage;
private Vector queryResult=new Vector();
private Vector item=new Vector();
private Vector colName=new Vector();
public Cpage()
{
con=DBConnection.getConnection();
}
public int getMaxPage()
{
return this.maxPage;
}
public Vector getQueryResult()
{
return this.queryResult;
}
public Vector getColName()
{
return this.colName;
}
public String getCol(ResultSet rst,int type,int colNum) throws Exception
{
String ret="";
switch(type)
{
case 1: ret=rst.getString(colNum);break;
case 2: ret=String.valueOf(rst.getDouble(colNum));break;
case 3: ret=String.valueOf(rst.getDouble(colNum));break;
case 4: ret=String.valueOf(rst.getInt(colNum));break;
case 5: ret=String.valueOf(rst.getInt(colNum));break;
case 6: ret=String.valueOf(rst.getFloat(colNum));break;
case 8: ret=String.valueOf(rst.getDouble(colNum));break;
case 12: ret=rst.getString(colNum);break;
case 91: ret=rst.getDate(colNum).toString();
}
return ret;
}
public void createResult(int curPage) throws Exception
{
con=DBConnection.getConnection();
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery("select count(*) from users");
int rows=0;
while(rst.next())
{
rows=rst.getInt(1);
}
rst.close();
stmt.close();
stmt=con.createStatement();
rst=stmt.executeQuery("select * from users");
ResultSetMetaData meta=rst.getMetaData();
int col=meta.getColumnCount();
int i;
colName.clear();
for(i=1;i<=col;i++)
{
colName.addElement(meta.getColumnName(i));
}
if(rows==0)
{
rst.close();
stmt.close();
con.close();
this.maxPage=0;
return;
}
if(rows % 10 !=0) this.maxPage=rows/10+1;
else this.maxPage=rows/10;
rst.close();
stmt.close();
if(this.maxPage==1)
{
stmt=con.createStatement();
rst=stmt.executeQuery("select * from users");
meta=rst.getMetaData();
col=meta.getColumnCount();
queryResult.clear();
while(rst.next())
{
item.clear();
for(i=1;i<=col;i++)
{
item.addElement(getCol(rst,meta.getColumnType(i),i));
}
queryResult.addElement(item);
}
}
else
{
stmt=con.createStatement();
rst=stmt.executeQuery("select top "+curPage*10+" * from users");
meta=rst.getMetaData();
col=meta.getColumnCount();
queryResult.clear();
int j=0;
while(rst.next())
{
j++;
if(j>(curPage-1)*10)
{
item.clear();
for(i=1;i<=col;i++)
{
item.addElement(getCol(rst,meta.getColumnType(i),i));
}
queryResult.addElement(item);
}
}
}
rst.close();
stmt.close();
con.close();
}}
-----------------------------------------------------------------------------------jsp页面内容
-----------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*,job.*"%>
<jsp:useBean id="userquery" class="job.Cpage" scope="session"/>
<jsp:useBean id="dbconnection" class="job.DBConnection" scope="page"/>
<%request.setCharacterEncoding("gb2312");%>
<script language="JavaScript">
<!--
function Jumping()
{
document.PageForm.submit();
return;
}
function gotoPage(pagenum)
{
document.PageForm.jumpPage.value=pagenum;
document.PageForm.submit();
return;
}
-->
</script>
<html>
<body>
<table border=0 cellspacing=0 cellpadding=0 align=center>
<tr >
<td valign=top>
<td> </td>
<%
String curPage=(String)request.getParameter("jumpPage");
int iCurPage;
if(curPage==null)
{
iCurPage=1;
userquery.createResult(iCurPage);
}
else
{
iCurPage=Integer.parseInt(curPage);
String sMaxPage=(String)session.getAttribute("maxPage");
int iMaxPage=Integer.parseInt(sMaxPage);
if(iCurPage>iMaxPage) iCurPage=iMaxPage;
userquery.createResult(iCurPage);
}
Vector vt=userquery.getColName();%>
<tr>
<%
for(int j=0;j<vt.size();j++)
{
%>
<td align=center bgcolor=#3DAC33><font size=2><%=(String)vt.elementAt(j)%></font></td>
<%
}
%>
</tr>
<%
int maxPage=userquery.getMaxPage();
if(maxPage!=0)
{
session.setAttribute("maxPage",String.valueOf(maxPage));
Vector vr=userquery.getQueryResult();
Enumeration er=vr.elements();
while(er.hasMoreElements())
{
Vector recitem=(Vector)er.nextElement();
// out.println(vr);
%><tr>
<%
for(int n=0;n<recitem.size();n++)
{
%>
<td bgcolor=#3DAC33 align=center><b><font size=3 color=#ffffff><%=(String)recitem.elementAt(n)%></font></b></td>
<%
}
%>
</tr>
<%
}%>
</table>
</p>
<%
if(maxPage!=1)
{
%>
<p>
<form name="PageForm" action="page.jsp" method="post" >
<table align=center>
<%if(iCurPage==1)
{
%>
<font size=2>首页 上一页 </font>
<%
}
else
{
%>
<font size=2>
<a href="javascript:gotoPage(1)">首页</a>
<a href="javascript:gotoPage(<%=iCurPage-1%>)">上一页</a>
</font>
<%
}
if(iCurPage==maxPage)
{
%>
<font size=2>下一页 尾页 </font>
<%
}
else
{
%>
<font size=2>
<a href="javascript:gotoPage(<%=iCurPage+1%>)">下一页</a>
<a href="javascript:gotoPage(<%=maxPage%>)">尾页</a>
</font>
<%
}
%>
<font size=2>
转到第<select name="jumpPage" onchange="Jumping()">
<%
for(int k=1;k<=maxPage;k++)
{
if(k==iCurPage)
{
%>
<option selected value=<%=k%>><%=k%></option>
<%
}
else
{
%>
<option value=<%=k%>><%=k%></option>
<%
}
}
%>
</select>页
</font>
</table>
</form>
</p>
<%
}
%>
<%
if(maxPage==0)
{
%>
</table>
</p>
<%
}
}
%>
</td></tr>
</body>
</html>
----------------------------------------------------------------------------------
/*
* 创建日期 2006-5-14
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package job;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;/**
* @author dy
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public class Cpage {
private Connection con;
private int maxPage;
private Vector queryResult=new Vector();
private Vector item=new Vector();
private Vector colName=new Vector();
public Cpage()
{
con=DBConnection.getConnection();
}
public int getMaxPage()
{
return this.maxPage;
}
public Vector getQueryResult()
{
return this.queryResult;
}
public Vector getColName()
{
return this.colName;
}
public String getCol(ResultSet rst,int type,int colNum) throws Exception
{
String ret="";
switch(type)
{
case 1: ret=rst.getString(colNum);break;
case 2: ret=String.valueOf(rst.getDouble(colNum));break;
case 3: ret=String.valueOf(rst.getDouble(colNum));break;
case 4: ret=String.valueOf(rst.getInt(colNum));break;
case 5: ret=String.valueOf(rst.getInt(colNum));break;
case 6: ret=String.valueOf(rst.getFloat(colNum));break;
case 8: ret=String.valueOf(rst.getDouble(colNum));break;
case 12: ret=rst.getString(colNum);break;
case 91: ret=rst.getDate(colNum).toString();
}
return ret;
}
public void createResult(int curPage) throws Exception
{
con=DBConnection.getConnection();
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery("select count(*) from users");
int rows=0;
while(rst.next())
{
rows=rst.getInt(1);
}
rst.close();
stmt.close();
stmt=con.createStatement();
rst=stmt.executeQuery("select * from users");
ResultSetMetaData meta=rst.getMetaData();
int col=meta.getColumnCount();
int i;
colName.clear();
for(i=1;i<=col;i++)
{
colName.addElement(meta.getColumnName(i));
}
if(rows==0)
{
rst.close();
stmt.close();
con.close();
this.maxPage=0;
return;
}
if(rows % 10 !=0) this.maxPage=rows/10+1;
else this.maxPage=rows/10;
rst.close();
stmt.close();
if(this.maxPage==1)
{
stmt=con.createStatement();
rst=stmt.executeQuery("select * from users");
meta=rst.getMetaData();
col=meta.getColumnCount();
queryResult.clear();
while(rst.next())
{
item.clear();
for(i=1;i<=col;i++)
{
item.addElement(getCol(rst,meta.getColumnType(i),i));
}
queryResult.addElement(item);
}
}
else
{
stmt=con.createStatement();
rst=stmt.executeQuery("select top "+curPage*10+" * from users");
meta=rst.getMetaData();
col=meta.getColumnCount();
queryResult.clear();
int j=0;
while(rst.next())
{
j++;
if(j>(curPage-1)*10)
{
item.clear();
for(i=1;i<=col;i++)
{
item.addElement(getCol(rst,meta.getColumnType(i),i));
}
queryResult.addElement(item);
}
}
}
rst.close();
stmt.close();
con.close();
}}
-----------------------------------------------------------------------------------jsp页面内容
-----------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*,job.*"%>
<jsp:useBean id="userquery" class="job.Cpage" scope="session"/>
<jsp:useBean id="dbconnection" class="job.DBConnection" scope="page"/>
<%request.setCharacterEncoding("gb2312");%>
<script language="JavaScript">
<!--
function Jumping()
{
document.PageForm.submit();
return;
}
function gotoPage(pagenum)
{
document.PageForm.jumpPage.value=pagenum;
document.PageForm.submit();
return;
}
-->
</script>
<html>
<body>
<table border=0 cellspacing=0 cellpadding=0 align=center>
<tr >
<td valign=top>
<td> </td>
<%
String curPage=(String)request.getParameter("jumpPage");
int iCurPage;
if(curPage==null)
{
iCurPage=1;
userquery.createResult(iCurPage);
}
else
{
iCurPage=Integer.parseInt(curPage);
String sMaxPage=(String)session.getAttribute("maxPage");
int iMaxPage=Integer.parseInt(sMaxPage);
if(iCurPage>iMaxPage) iCurPage=iMaxPage;
userquery.createResult(iCurPage);
}
Vector vt=userquery.getColName();%>
<tr>
<%
for(int j=0;j<vt.size();j++)
{
%>
<td align=center bgcolor=#3DAC33><font size=2><%=(String)vt.elementAt(j)%></font></td>
<%
}
%>
</tr>
<%
int maxPage=userquery.getMaxPage();
if(maxPage!=0)
{
session.setAttribute("maxPage",String.valueOf(maxPage));
Vector vr=userquery.getQueryResult();
Enumeration er=vr.elements();
while(er.hasMoreElements())
{
Vector recitem=(Vector)er.nextElement();
// out.println(vr);
%><tr>
<%
for(int n=0;n<recitem.size();n++)
{
%>
<td bgcolor=#3DAC33 align=center><b><font size=3 color=#ffffff><%=(String)recitem.elementAt(n)%></font></b></td>
<%
}
%>
</tr>
<%
}%>
</table>
</p>
<%
if(maxPage!=1)
{
%>
<p>
<form name="PageForm" action="page.jsp" method="post" >
<table align=center>
<%if(iCurPage==1)
{
%>
<font size=2>首页 上一页 </font>
<%
}
else
{
%>
<font size=2>
<a href="javascript:gotoPage(1)">首页</a>
<a href="javascript:gotoPage(<%=iCurPage-1%>)">上一页</a>
</font>
<%
}
if(iCurPage==maxPage)
{
%>
<font size=2>下一页 尾页 </font>
<%
}
else
{
%>
<font size=2>
<a href="javascript:gotoPage(<%=iCurPage+1%>)">下一页</a>
<a href="javascript:gotoPage(<%=maxPage%>)">尾页</a>
</font>
<%
}
%>
<font size=2>
转到第<select name="jumpPage" onchange="Jumping()">
<%
for(int k=1;k<=maxPage;k++)
{
if(k==iCurPage)
{
%>
<option selected value=<%=k%>><%=k%></option>
<%
}
else
{
%>
<option value=<%=k%>><%=k%></option>
<%
}
}
%>
</select>页
</font>
</table>
</form>
</p>
<%
}
%>
<%
if(maxPage==0)
{
%>
</table>
</p>
<%
}
}
%>
</td></tr>
</body>
</html>
<jsp:useBean id="conDB" scope="session" class="db.dataConn" />
<%
int i;
String strSQL="select * from table";
ResultSet rs=conDB.exeQuery(strSQL);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<%
//开始纪录页数,如果pg是null那么设置为第一页
String pg=request.getParameter("pg");
if(pg==null)
pg="1";
int tt;//记录总数
rs.last();
//得到纪录条数
tt=rs.getRow();
//指回接过级首位
rs.first();
int pagex;
//这里的 tt%10 为每页显示纪录的条数,可以自己定义
if(tt%10==0)
//这里计算共多少页,有于数,那么页数+1
{pagex=(tt/10);}
else
{pagex=(tt/10)+1;}//计算总页数
int pagey;//从用户那里得到的目标页
pagey=Integer.parseInt(pg);
如果页数小于1,那么把页数设置成1
if(pagey<1)
{
pagey=1;
}
//如果页数大于总页数,那么设置成最大页数
if(pagey>pagex)
{
pagey=pagex;
}
//翻页开始,调整记录指针的位置
int n=(pagey-1)*10+1;
int a;
for(a=0;a<n-1;a++)
{
if(!rs.isLast())
rs.next();
}
//翻页结束
%>
<table width="80%" border="1" align="center">
<tr align="center">
<td width="33%">id</td>
<td width="33%">name</td>
<td width="33%">age</td>
</tr>
<!-- 循环输出开始 -->
<tr align="center">
<% for(i=0;i<10;i++)
{ if(!rs.isAfterLast()){
%>
<tr>
<td width="33%" nowrap><div align="center"><%=rs.getString("id")%></div></td>
<td width="33%" nowrap><div align="center"><%=rs.getString("name")%></div></td>
<td width="33%" nowrap><div align="center"><%=rs.getString("age")%></div></td> </tr>
<%rs.next();
}
}
%>
<!-- 循环输出结束 -->
</tr>
</table>
<form name="form1" method="post" action="page.jsp">
<div align="center"><a href="page.jsp?pg=1">首页</a>|
<%
if ((pagey-1)>=1){
%>
<a href="page.jsp?pg=<%=(pagey-1)%>">上一页</a>
<%}
else{out.print("上一页");}
%>
|
<%
if ((pagey+1)<=pagex){
%>
<a href="page.jsp?pg=<%=(pagey+1)%>">下一页</a>
<%}
else{out.print("下一页");}
%>
| <a href="page.jsp?pg=<%=pagex%>">尾页</a> 每页10条 共 <%=pagex%> 页
<!-- 下拉菜单开始 -->
<select name="pg" id="pg">
<%
int pg1=0;
for(pg1=1;pg1<=pagex;pg1++){
%>
<option value="<%=pg1%>" <%
if(pagey==pg1)
{out.print("selected");}
%>><%=pg1%></option>
<%}%>
</select> <!-- 下拉菜单结束 -->
页
<input type="submit" name="Submit" value="go">
</div>
</form>
<p> </p>
</body>
</html>
<%
rs.close();%>都有说明,自己参考..