<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.lang.Math.*" %>
<jsp:useBean id="userBean" scope="page" class="我的bean"/>
int t;
int mtotal;
t=0;
String strSQLsize="SELECT * FROM 数据表";
ResultSet RSsize = userBean.executeQuery(strSQLsize);
while(RSsize.next()){
t=t+1;
}
if((t%5)>0){
mtotal=t/5+1;
}else mtotal=t/5;
%><%!String pageNo, mTmp;
int i, j, k;
%>
<%
pageNo = request.getParameter("pageNo");
if(pageNo == null){
pageNo = "1";
}
j = Integer.parseInt(pageNo); if(j < 1)
j = 1;
if(j > mtotal)
j = mtotal; %><%
String strSQL="SELECT * FROM 数据表";
ResultSet RSa = userBean.executeQuery(strSQL);
for(k = 0;k < (j-1)*5;k++)
{ RSa.next();
} i = 0;
k = 1;
out.print("<table border='1' bgcolor='#99CCFF'><tr><td width='296'>文章主题</td><td width='136'>作者</td></tr></table>");
while (RSa.next()) {
//out.println("ok"+i+"ok");
i = i + 1;
//超过3条
if(i == 6)
{
k = 0;
break;
}
String id=RSa.getString(1); out.print("<table border='1'><tr><td width='296'><a href='test1.jsp?zhuti="+RSa.getString(1)+"'>"+RSa.getString(1)+"</td><td width='136'>"+RSa.getString(2)+"</td></tr></table>");
}
i = i - k;
RSa.close(); %>
<%////////////////////////////////////////////////
if(j > 1)
{
%><table>
<tr>
<td width='256'></td>
<td>
<a href="con1.jsp?pageNo=1">第一页</a>
<%
int ii = Integer.parseInt(pageNo,10);
// out.println(ii);
if(ii > 1)
ii = ii -1;
String ssTmp = Integer.toString(ii);
%>
<a href="con1.jsp?pageNo=<%=ssTmp%>">上一页</a>
<%
}
if(j < mtotal)
{
int ii = Integer.parseInt(pageNo,10);
if(ii < mtotal)
ii = ii + 1;
String ssTmp = Integer.toString(ii);
%>
<a href="con1.jsp?pageNo=<%=ssTmp%>">下一页</a>
<a href="con1.jsp?pageNo=<%=mtotal%>">最后页</a>
<%
}
if(mtotal < j)
j = mtotal;
%></td>
</tr>
</table>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.lang.Math.*" %>
<jsp:useBean id="userBean" scope="page" class="我的bean"/>
int t;
int mtotal;
t=0;
String strSQLsize="SELECT * FROM 数据表";
ResultSet RSsize = userBean.executeQuery(strSQLsize);
while(RSsize.next()){
t=t+1;
}
if((t%5)>0){
mtotal=t/5+1;
}else mtotal=t/5;
%><%!String pageNo, mTmp;
int i, j, k;
%>
<%
pageNo = request.getParameter("pageNo");
if(pageNo == null){
pageNo = "1";
}
j = Integer.parseInt(pageNo); if(j < 1)
j = 1;
if(j > mtotal)
j = mtotal; %><%
String strSQL="SELECT * FROM 数据表";
ResultSet RSa = userBean.executeQuery(strSQL);
for(k = 0;k < (j-1)*5;k++)
{ RSa.next();
} i = 0;
k = 1;
out.print("<table border='1' bgcolor='#99CCFF'><tr><td width='296'>文章主题</td><td width='136'>作者</td></tr></table>");
while (RSa.next()) {
//out.println("ok"+i+"ok");
i = i + 1;
//超过3条
if(i == 6)
{
k = 0;
break;
}
String id=RSa.getString(1); out.print("<table border='1'><tr><td width='296'><a href='test1.jsp?zhuti="+RSa.getString(1)+"'>"+RSa.getString(1)+"</td><td width='136'>"+RSa.getString(2)+"</td></tr></table>");
}
i = i - k;
RSa.close(); %>
<%////////////////////////////////////////////////
if(j > 1)
{
%><table>
<tr>
<td width='256'></td>
<td>
<a href="con1.jsp?pageNo=1">第一页</a>
<%
int ii = Integer.parseInt(pageNo,10);
// out.println(ii);
if(ii > 1)
ii = ii -1;
String ssTmp = Integer.toString(ii);
%>
<a href="con1.jsp?pageNo=<%=ssTmp%>">上一页</a>
<%
}
if(j < mtotal)
{
int ii = Integer.parseInt(pageNo,10);
if(ii < mtotal)
ii = ii + 1;
String ssTmp = Integer.toString(ii);
%>
<a href="con1.jsp?pageNo=<%=ssTmp%>">下一页</a>
<a href="con1.jsp?pageNo=<%=mtotal%>">最后页</a>
<%
}
if(mtotal < j)
j = mtotal;
%></td>
</tr>
</table>
解决方案 »
- 偶得如此面试题,涉及到Java、GAE以及雅虎搜索接口,大家一起探讨一下
- css 问题
- WEB 工程如何打包成setup文件?
- jsp页面如何显示带有html标志的字符串
- 每次进入SimpleFormController都会执行formBackingObject方法吗
- comin & c ~~简单的JSP问题~~
- 数据库操作方面
- 调试jsp出现问题--为什么test.java能运行,而test.jsp却出现问题(classpath里已经加入了sqlserver驱动程序了)
- 在jsp中,我怎么样判断他的结果集是否为空?
- ResultSet类型 (JSP)
- JSP与oralce数据库的问题
- 如何解决页面过期的问题?
<html>
<head>
<title>分页显示</title>
</head>
<body>
<%
Vector vector = (Vector)session.getAttribute("vector");
int pageSize = 3; //每页显示的记录数
int totalNum = vector.size(); //总共要显示的记录数
int totalPageNum = totalNum / pageSize + 1; //不能整除的话就还要一页显示余下的记录
if (totalNum % pageSize == 0) totalPageNum = totalPageNum -1; //如果记录总数可以整除每页显示的记录数则减少一页
String sPageNum = (String)request.getParameter("sPageNum");
int iPageNum; //当前页数
int iLeavePage; //剩下页数
int currentCount; //当前要显示的记录数
if (sPageNum == null)
{
iPageNum = 1;
iLeavePage = totalPageNum - iPageNum;
}
else
{
iPageNum = new Integer(sPageNum).intValue();
iLeavePage = totalPageNum - iPageNum;
}
if ((iPageNum == totalPageNum)&&(totalNum % pageSize != 0))
currentCount = totalNum % pageSize;
else currentCount = pageSize;
%>
<%
if (iPageNum >1)
{
%>
<a href="display.jsp?sPageNum=<%= new Integer(iPageNum - 1).toString()%>">上一页</a>
<%
}
if (iPageNum < totalPageNum)
{
%>
<a href="display.jsp?sPageNum=<%= new Integer(iPageNum + 1).toString()%>">下一页</a>
<%
}
%>
<table>
<tr>
<td>属性</td>
<td>名字</td>
<td>密码</td>
</tr>
<%
for (int i=(iPageNum-1)*pageSize;i<(iPageNum-1)*pageSize+currentCount;i++)
{
String[] str = (String[])vector.get(i);
%>
<tr>
<td><%out.println(str[0]);%></td>
<td><%out.println(str[1]);%></td>
<td><%out.println(str[2]);%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
private final static int SKIP = 100;
2.定义一个确定某个分页条数的全局变量,即该显示页的当前显示数据条数。
private static int cur = 0;
3.定义一个ResultSet全局变量,以便多次使用
private static java.sql.Result rs = null;
4.打开一个数据库连接[/pre]
Class.forName( sqlDriver );
java.sql.Connection conn = DriverManager.getConnection( URL, (String)userName,(String)Passwd)
Statement stmt = conn.createStatement();
String searchSql = "......";
rs = stmt.executeQuery(searchSql);
5.获取查询结果集数据(一般是在查询按钮的响应事件函数里)
......
nextButton.setEnable(true);
cur = 0;
while( cur < SKIP && rs.next() ){
cur ++ ;
.....(获取rs中的记录,存入java程序的变量中)
}
6.显示下一页的结果集数据(一般是在下页按钮的响应事件函数里)
if( rs.getRow() == 0 )
{
nextButton.setEnable(false);
closeConnection(); --rs的cursor已经到了最后,结果集显示完毕,关闭此次的连接
}
cur = 0;
if(rs != null && rs.getRow() > 0)
{
....将上页显示的内容清除
while(cur < SKIP && rs.next() )
{
cur ++ ;
.....(获取结果集中的记录,存入java程序的变量中)
}
}
缺陷: 此方法根据2.0版本的JDBC(具体和JDBC驱动程序的提供商有关)之前的ResultSet类产生,因为ResultSet无法将已经显示的结果集回滚,所以此法只能按照ResultSet类的定义,从左往右、从前往后的浏览数据结果。无法动态显示指定任意前后的结果集数据。
select top n * from t while id not in (select top m id from t order by id) order by id n是每页显示记录数,m是当前页前面的记录数,每次用not in把前面的记录排除,在剩下的记录中显示前面的记录从而实现分页。