<%
Connection conn = yy.getConn();//取得数据库连接
Statement sqlStmt = conn.createStatement();//sql语句对象
ResultSet sqlRst;//结果集对象
String strSQL; //SQL语句
int intPageSize;//一页显示的记录数
int intRowCount;//记录总数
int intPageCount;//总页数
int intPage; //待显示页码
String strPage;
int i = 0;
intPageSize = 20;//设置一页显示的记录数
strPage = request.getParameter("page");
if(strPage == null){//表明在QueryString中没有page这个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转成整形
intPage = Integer.parseInt(strPage);
if(intPage <1) intPage = 1;
}
//创建一个可以滚动的只读的SQL语句对象
sqlStmt = conn.createStatement (java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//准备SQL语句
strSQL = "select rownum,id,topic,content from news order by id desc";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount + intPageSize - 1)/intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount > 0){
//将记录指针定位到待显示的第一条记录上
sqlRst.absolute((intPage - 1) * intPageSize + 1);
//显示数据
while(i < intPageSize && !sqlRst.isAfterLast()){
%>
<TBODY>
<TR>
<TD align=left class="jnfont6"><a href="news_list.jsp?fid=<%=sqlRst.getString("id")%>"><%=sqlRst.getString("rownum")%>.<%=sqlRst.getString("topic")%></a></TD>
</TR>
<%
sqlRst.next();
i++;
}
}
%>
<TR>
<TD vAlign=top>
<P> </P>
<TABLE width="100%" align=center border=0>
<TBODY>
<TR>
<TD class=news>
<P> <BR>
</P></TD></TR>
<TR>
<TD align=middle><a href="index.jsp" class="jnfont6">返回首页 </a></TD>
<td class="jnfont6" align=right><div align="right">第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%>
<a href="news_more.jsp?page=<%=intPage+1%>">下一页</a>
<%}%>
<%if(intPage>1){%>
<a href="news_more.jsp?page=<%=intPage-1%>">上一页</a>
<%}%>
<%
sqlRst.close();
conn.close();
%>
</BODY></HTML>
Connection conn = yy.getConn();//取得数据库连接
Statement sqlStmt = conn.createStatement();//sql语句对象
ResultSet sqlRst;//结果集对象
String strSQL; //SQL语句
int intPageSize;//一页显示的记录数
int intRowCount;//记录总数
int intPageCount;//总页数
int intPage; //待显示页码
String strPage;
int i = 0;
intPageSize = 20;//设置一页显示的记录数
strPage = request.getParameter("page");
if(strPage == null){//表明在QueryString中没有page这个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转成整形
intPage = Integer.parseInt(strPage);
if(intPage <1) intPage = 1;
}
//创建一个可以滚动的只读的SQL语句对象
sqlStmt = conn.createStatement (java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//准备SQL语句
strSQL = "select rownum,id,topic,content from news order by id desc";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount + intPageSize - 1)/intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount > 0){
//将记录指针定位到待显示的第一条记录上
sqlRst.absolute((intPage - 1) * intPageSize + 1);
//显示数据
while(i < intPageSize && !sqlRst.isAfterLast()){
%>
<TBODY>
<TR>
<TD align=left class="jnfont6"><a href="news_list.jsp?fid=<%=sqlRst.getString("id")%>"><%=sqlRst.getString("rownum")%>.<%=sqlRst.getString("topic")%></a></TD>
</TR>
<%
sqlRst.next();
i++;
}
}
%>
<TR>
<TD vAlign=top>
<P> </P>
<TABLE width="100%" align=center border=0>
<TBODY>
<TR>
<TD class=news>
<P> <BR>
</P></TD></TR>
<TR>
<TD align=middle><a href="index.jsp" class="jnfont6">返回首页 </a></TD>
<td class="jnfont6" align=right><div align="right">第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage<intPageCount){%>
<a href="news_more.jsp?page=<%=intPage+1%>">下一页</a>
<%}%>
<%if(intPage>1){%>
<a href="news_more.jsp?page=<%=intPage-1%>">上一页</a>
<%}%>
<%
sqlRst.close();
conn.close();
%>
</BODY></HTML>
不过你要把思路和实现的流程分开考虑,用mvc的观点去分析一个问题
1 。 读取数据 写一个专门的类,负责从数据库中读取数据,并将数据封装到(arraylist ,或什么 集合变量里)2 。 分页计算,你这里就可以写在jsp里了,如果想使结构清晰,再写一个处理业务的bean
进行 分页计算(当前页,最大页,等等)
每一页显示的 数据是固定的,最好将当前页要显示的数据 再装到 一个 list里,取名叫currentList
或什么的,表明这个集合变量里放的数据就是jsp页面要显示的,
这样翻页操作一个比较抽象的概念就变成了 每次对currentList的操作
3。jsp 界面什么都不需要计算只需要遍历 这个currentList 取出当前数据 并显示就可以了
自己将条理弄清楚,你的问题自己就能调试好了,
现在的代码有点乱,别人给你找出毛病,你对分页也还是不太懂
问题来了,现在如何实现在同一frame也能正常显示呢?
各位一起研究研究.
然后,可以重复使用。
而且,这样的代码很不容易维护。。