急!!!用JAVA做一个分页程序

要求如下:数据库中有多条学生记录,实现一个在命令行运行的分页程序:每页显示20条记录。并显示总页数、当前第几页。程序开始运行时显示第一页,以后由用户输入要显示的页号。先谢... 要求如下:
数据库中有多条学生记录,实现一个在命令行运行的分页程序:每页显示20条记录。并显示总页数、当前第几页。程序开始运行时显示第一页,以后由用户输入要显示的页号。
先谢了!
展开
 我来答
月亮望见了小鱼
2011-12-13 · TA获得超过134个赞
知道答主
回答量:167
采纳率:0%
帮助的人:154万
展开全部
这个简单 我给个例子吧

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import = "java.sql.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'ShowStu.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%
String User = (String)session.getAttribute("LoginUser");
if(User == null)
response.sendRedirect("Login.jsp");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection con=DriverManager.getConnection("jdbc:odbc:stu","","");
//注意后面的参数,如果要使用absolute函数,必须使用本参数
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

//定义每页的记录数
int RecPerPage = 15;

//首先查询总记录数
ResultSet rs = stmt.executeQuery("select count(*) from students");
int TotalRec = 0;
if(rs.next())
TotalRec = rs.getInt(1);
//下面计算一共需要多少页
int TotalPageNum = TotalRec / RecPerPage;
if(TotalRec % RecPerPage != 0) //如果不能整除,则必须增加一页显示剩余记录
TotalPageNum ++;

//下面通过参数获取当前页号
String strPageNo = request.getParameter("CurPageNo");
int CurPage;
//如果未输入参数,则当前页号自动设置为1
if(strPageNo == null)
CurPage = 1;
else //否则从参数中转换页号
CurPage = Integer.parseInt(strPageNo);

//如果页号大于最大页号,则只能等于最大页号
if(CurPage > TotalPageNum)
CurPage = TotalPageNum;

//计算当前页面的第一条记录号
int FirstRecNo = (CurPage - 1) * RecPerPage + 1;

rs = stmt.executeQuery("select * from students");
%>
<table border ="1" width="80%" align="center">
<tr>
<td width="30" align="center">SID</td>
<td width="30" align="center">SName</td>
<td width="40" align="center">Class</td>
</tr>
<%
//跳到当前布面的第一条记录,如果不成功,则不显示
if(rs.absolute(FirstRecNo))
{
//设置一个变量,记录当前页面已显示了多少条记录
int Count = 0;
do
{
%>
<tr>
<td align="center"><%=rs.getInt("SID") %></td>
<td align="center"><%=rs.getString("SName") %></td>
<td align="center"><%=rs.getString("Class") %></td>
</tr>
<%
Count ++;
//如果当前页面显示的记录已达到每页记录数要求,则停止显示
if(Count >= RecPerPage)
break;
}while(rs.next());
}
%>
</table>
<p align="center">
<%
//下面显示最下面的页号及其链接
for(int i=1;i<=TotalPageNum;i++)
{
%>
<a href="ShowStu.jsp?CurPageNo=<%=i %>"><%=i %></a>
<%
}
%>
</p>
<%
rs.close();
stmt.close();
con.close();
%>
</body>
</html>

当然数据库得楼主自己建 这个是我们做过的
水曜曦q3
2011-12-13 · TA获得超过1101个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:168万
展开全部
使用pagebean处理分页,
public class PageBean {

private int currentPage = 1;
private int pageSize = 4;
private int totalRecords = 0;

public int getFirstResult() {
return (currentPage - 1) * pageSize;
}

/**
* 判断是否有下一页
*
* @return
*/
public boolean getHasNext() {
if (totalRecords % pageSize == 0) {
return totalRecords / pageSize > currentPage ? true : false;
} else {
return (totalRecords / pageSize + 1) > currentPage ? true : false;
}
}

/**
* 是否有上一页
*
* @return
*/
public boolean getHasPrew() {
return currentPage > 1 ? true : false;
}

public int getLast() {
if (totalRecords % pageSize == 0) {
return totalRecords / pageSize;
} else {
return (totalRecords / pageSize + 1);
}
}

public int getCurrentPage() {
return currentPage;
}

public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public int getTotalRecords() {
return totalRecords;
}

public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
494269565
2011-12-13
知道答主
回答量:33
采纳率:0%
帮助的人:12.5万
展开全部
select * from (select a.*,rownum rn from (select * from student)a where rownum<=end)where rn>=begin
end=页号*页size
begin=(页号-1)*页size+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式