急!!!用JAVA做一个分页程序
要求如下:数据库中有多条学生记录,实现一个在命令行运行的分页程序:每页显示20条记录。并显示总页数、当前第几页。程序开始运行时显示第一页,以后由用户输入要显示的页号。先谢...
要求如下:
数据库中有多条学生记录,实现一个在命令行运行的分页程序:每页显示20条记录。并显示总页数、当前第几页。程序开始运行时显示第一页,以后由用户输入要显示的页号。
先谢了! 展开
数据库中有多条学生记录,实现一个在命令行运行的分页程序:每页显示20条记录。并显示总页数、当前第几页。程序开始运行时显示第一页,以后由用户输入要显示的页号。
先谢了! 展开
3个回答
展开全部
这个简单 我给个例子吧
<%@ 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>
当然数据库得楼主自己建 这个是我们做过的
<%@ 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>
当然数据库得楼主自己建 这个是我们做过的
展开全部
使用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;
}
}
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from (select a.*,rownum rn from (select * from student)a where rownum<=end)where rn>=begin
end=页号*页size
begin=(页号-1)*页size+1
end=页号*页size
begin=(页号-1)*页size+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询