那个web上分页怎么弄啊? 关于web浏览器上从数据库里,读数据是页面分页的问题,怎么实现,用javascript或jsp,谢谢。呵呵,不太会啊,大家多关照啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请百度一下“jsp分页”或者“数据库分页”,结果一大坨!下个例子,自己照着做,不同的数据库对分页的支持不同,所以实现也不同,尽管有些解决方案,不过在碰到一些细粒度控制的条件的时候,还是有些力不从心。这个东西不难,就是有些麻烦,还是自己来实现比较靠谱。 对ResultSet结果集移动游标的方式分页是一种简单,常用的方法也可以使用Sql语句分页.在MySQL中最简单,Select * from table_name limit 5,10;表示从第五条数据开始取,取10条数据 ============================JSP数据分页显示代码============================<%@ page language="java" import="java.util.*,java.sql.*" %><%@ page contentType="text/html;charset=gb2312" %><jsp:useBean id="cn" scope="page" class="DBConnection.Conn" /><%//变量声明int intpagesize; //一页显示的记录数int introwcount; //记录总数int intpagecount; //总页数int intpage; //待显示页码//设置一页显示的记录数intpagesize = 20;//设置当前网页文件名string strpageurl="show.jsp";//取得待显示页码string strpage = request.getparameter("page");if(strpage==null){intpage = 1;}else{//将字符串转换成整型intpage = java.lang.integer.parseint(strpage);if(intpage<1) intpage = 1;}//获取记录总数ResultSet rsc=cn.rsexecuteQuery("Select count(id) as AllRecord from tablename");introwcount=rsc.getInt("AllRecord");rsc.next();rsc.close();//记算总页数intpagecount = (introwcount+intpagesize-1) / intpagesize;if(intpage>intpagecount) intpage = intpagecount;//取得记录集ResultSet rs=cn.rsexecuteQuery("select top "+intpagesize+" * from tablename where id not in (select top "+((intpage-1)*intpagesize)+" id from tablename order by id desc) order by id desc");while(rs.next) {%>********这里写循环体*******<%}//关闭结果集rs.close();%><%-- 下面为页码输出代码段 --%>共<%=intpagecount%>页 当前页< %=intpage%>/<%=intpagecount%> <%if(intpage>1){%><a href="<%=strpageurl%>&page=1">首页</a><%}%> <a href="<%=strpageurl%>&page=<%=intpage-1%>">上一页</a> <%if(intpage<intpagecount){%><a href="<%=strpageurl%>&page=<%=intpage+1%>">下一页</a> <a href="<%=strpageurl%>&page=<%=intpagecount%>">末页</a><%}%>============================jsp的分页显示代码============================<%@ page contentType="text/html;charset=gb2312" %><%@ page language="java" import="java.sql.*" %><script language="javascript">function newwin(url) {varnewwin=window.open(url,"newwin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=450");newwin.focus();return false;}</script><script LANGUAGE="javascript">function submit10(){self.location.replace("fenye1.jsp")}</script><%//变量声明java.sql.Connection sqlCon; //数据库连接对象java.sql.Statement sqlStmt; //SQL语句对象java.sql.ResultSet sqlRst; //结果集对象java.lang.String strCon; //数据库连接字符串java.lang.String strSQL; //SQL语句int intPageSize; //一页显示的记录数int intRowCount; //记录总数int intPageCount; //总页数int intPage; //待显示页码java.lang.String strPage;int i;//设置一页显示的记录数intPageSize = 4;//取得待显示页码strPage = request.getParameter("page");if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据intPage = 1;}else{//将字符串转换成整型intPage = java.lang.Integer.parseInt(strPage);if(intPage<1) intPage = 1;}//装载JDBC驱动程序Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//设置数据库连接字符串strCon = "jdbc:odbc:heyang";//连接数据库sqlCon = java.sql.DriverManager.getConnection(strCon,"sa","");//创建一个可以滚动的只读的SQL语句对象sqlStmt =sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句strSQL = "select user_id,user_name from userinfo order by user_id desc";//执行SQL语句并获取结果集sqlRst = sqlStmt.executeQuery(strSQL);//获取记录总数sqlRst.last();//??光标在最后一行intRowCount = sqlRst.getRow();//获得当前行号//记算总页数intPageCount = (intRowCount+intPageSize-1) / intPageSize;//调整待显示的页码if(intPage>intPageCount) intPage = intPageCount;%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>会员管理</title></head><body><form method="POST" action="fenye1.jsp">第<%=intPage%>页共<%=intPageCount%>页<%if(intPage<intPageCount){%><ahref="fenye1.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="fenye1.jsp?page=<%=intPage-1%>">上一页</a><%}%>转到第:<input type="text" name="page" size="8"> 页<span><input class=buttonface type=´submit´ value=´GO´ name=´cndok´></span></form><table border="1" cellspacing="0" cellpadding="0"><tr><th>ID</th><th>用户名</th><th width=´8%´>删除</th></tr><%if(intPageCount>0){//将记录指针定位到待显示页的第一条记录上sqlRst.absolute((intPage-1) * intPageSize + 1);//显示数据i = 0;String user_id,user_name;while(i<intPageSize && !sqlRst.isAfterLast()){user_id=sqlRst.getString(1);user_name=sqlRst.getString(2);%><tr><td><%=user_id%></td><td><%=user_name%></td><td width=´8%´ align=´center´><a href="delete.jsp?user_id=<%=user_id%>"onClick="return newwin(this.href);">删除</a></td></tr><%sqlRst.next();i++;}}%></table></body></html><%//关闭结果集sqlRst.close();//关闭SQL语句对象sqlStmt.close();//关闭数据库sqlCon.close();%> <%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" %> <% String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs"; String pagesql,sql; ResultSet pagers,rs; int i; int ipage=10; //分页单位 int allpage; //总页数 int pages; //接受的页码变量 int cpage=1; //当前页 int allCol=0; //总记录数 int beginpos=0; //每页开始位置 int endpos=0; //每页的结束位置 //注册驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection sqlCon = DriverManager.getConnection(url,"sa","sa"); Statement sqlStmt =sqlCon.createStatement(); //取总记录数 pagesql = "select count(*) as count from employee"; pagers = sqlStmt.executeQuery(pagesql); if(pagers.next()) { allCol = pagers.getInt("count"); } //获得总页面数 allpage = (allCol+ipage-1)/ipage; //判断参数pages是否为空 if (request.getParameter("pages")==null) { pages=1; beginpos=0; endpos=ipage; } else { pages = new Integer(request.getParameter("pages")).intValue(); } //判断当前页 if(pages > allpage || pages <1) { cpage = 1; //-默认当前要显示的页码 beginpos=0; //-=默认记录开始的位置为0 endpos=ipage; //--默认结束位置为第一页的结尾 } else { cpage = pages; //--当前要显示的页码 beginpos=pages*ipage-ipage; //--得到记录开始的位置 endpos=pages*ipage; //--得到记录结束的位置 } sql = "select * from employee order by emp_id"; rs= sqlStmt.executeQuery(sql); //--得到要分页的结果集 for(i=0;i<beginpos;i++) { rs.next(); //--把结果集的记录数移到要显示的页的记录的开始位置 } %> <TABLE align=center bgColor=#000000 border=0 borderColor=#000000 cellSpacing=0 width="750"> <TR> <TD> <TABLE border=0 cellPadding=2 cellSpacing=1 width="100%"> <TR bgColor=#d14f00> <TD align=middle width=50><B><FONT color=#ffffff>序号</FONT></B></TD> <TD align=middle width=82><B><FONT color=#ffffff>姓</FONT></B></TD> <TD align=middle width=200><B><FONT color=#ffffff>地址</FONT></B></TD> <TD align=middle ><B><FONT color=#ffffff>名</FONT></B></TD> </TR> <% for(int j=beginpos;j<endpos;j++) //---从开始位置读取记录一直到结束位置 { if(rs.next()) { String emp_id=new String(rs.getString("emp_id").getBytes("8859_1"),"gb2312"); String fname=new String(rs.getString("fname").getBytes("8859_1"),"gb2312"); String minit=new String(rs.getString("minit").getBytes("8859_1"),"gb2312"); String lname=new String(rs.getString("lname").getBytes("8859_1"),"gb2312"); %> <TR bgColor=#eeeeee> <TD width=82><%=emp_id%></TD> <TD align=middle width=90 ><%=fname%></TD> <TD align=middle width=150><%=minit%></TD> <TD align=middle width=150><%=lname%></TD> </TR> <% } else break; } %> </table> </TD> </TR> </TABLE> <TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="750"> <TR> <TD> <TABLE border=0 cellPadding=0 cellSpacing=0 width="750"> <TR bgColor=#d14f00> <TD align=center> <FONT color=#ffffff> 总计:<%= allCol %>条记录 |每页:<%=ipage%>条| 共 <%= allpage %>页 | 当前页为:<%=cpage%>/<%=allpage%> | <% if (cpage>1) { %><a href="fy.jsp?pages=1"><FONT color=blue>第一页</a> | <a href="fy.jsp?pages=<%= cpage-1 %>"><FONT color=blue>上一页 |</a> <% } if (cpage<allpage) { %><a href="fy.jsp?pages=<%= cpage+1 %>"><FONT color=blue>下一页</a> | <a href="fy.jsp?pages=<%=allpage%>"><FONT color=blue>结尾页</a> <% } %> </FONT> </TD> </tr> <tr bgColor=#d14f00 align=right> <td ><form name=form1 method=post action=fy.jsp> 转到: <select name="pages" size="1"> <% for(int m=0;m<allpage;m++) { %> <option value="<%=m+1%>">第<%=m+1%>页</option> <% } %> </select> <input name="B1" type="submit" tabindex="1" WIDTH="70" HEIGHT="20" value="跳 转" > </td> </TR> </TABLE></form> </TD> </TR> </TABLE> </html> spring整合struts2 急急急。。。。菜鸟请教下关于倒计时的问题。 java程序中写sql语句和存储过程 哪个效率高些 ? hibernate,spring配置异常 关于超链接同时打开二个不同页面的问题!!! eclipse jsp Spring2.0 + hibernate + struts遇到的比较奇怪影射问题 这里有好多的视频教程,只要你想要的都有!现拿出来与大家分享! 高手请入内:关于ResourceBundle 类的问题 why?关于jsp中taglib的问题 代码不懂,能详细解释一下吗? 记忆用户操作
在MySQL中最简单,Select * from table_name limit 5,10;
表示从第五条数据开始取,取10条数据
============================JSP数据分页显示代码============================<%@ page language="java" import="java.util.*,java.sql.*" %>
<%@ page contentType="text/html;charset=gb2312" %>
<jsp:useBean id="cn" scope="page" class="DBConnection.Conn" />
<%
//变量声明
int intpagesize; //一页显示的记录数
int introwcount; //记录总数
int intpagecount; //总页数
int intpage; //待显示页码//设置一页显示的记录数
intpagesize = 20;
//设置当前网页文件名
string strpageurl="show.jsp";//取得待显示页码
string strpage = request.getparameter("page");
if(strpage==null){
intpage = 1;
}
else{
//将字符串转换成整型
intpage = java.lang.integer.parseint(strpage);
if(intpage<1) intpage = 1;
}//获取记录总数
ResultSet rsc=cn.rsexecuteQuery("Select count(id) as AllRecord from tablename");
introwcount=rsc.getInt("AllRecord");rsc.next();
rsc.close();
//记算总页数
intpagecount = (introwcount+intpagesize-1) / intpagesize;if(intpage>intpagecount) intpage = intpagecount;//取得记录集
ResultSet rs=cn.rsexecuteQuery("select top "+intpagesize+" * from tablename where id not in (select top "+((intpage-1)*intpagesize)+" id from tablename order by id desc) order by id desc");
while(rs.next) {
%>********这里写循环体*******<%
}
//关闭结果集
rs.close();
%>
<%-- 下面为页码输出代码段 --%>
共<%=intpagecount%>页 当前页< %=intpage%>/<%=intpagecount%>
<%if(intpage>1){%><a href="<%=strpageurl%>&page=1">首页</a><%}%> <a href="<%=strpageurl%>&page=<%=intpage-1%>">上一页</a>
<%if(intpage<intpagecount){%><a href="<%=strpageurl%>&page=<%=intpage+1%>">下一页</a> <a href="<%=strpageurl%>&page=<%=intpagecount%>">末页</a><%}%>============================jsp的分页显示代码============================<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.sql.*" %><script language="javascript">
function newwin(url) {
varnewwin=window.open(url,"newwin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=450");
newwin.focus();
return false;
}
</script>
<script LANGUAGE="javascript">
function submit10()
{
self.location.replace("fenye1.jsp")
}
</script>
<%//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;
int i;
//设置一页显示的记录数
intPageSize = 4;
//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
//装载JDBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
strCon = "jdbc:odbc:heyang";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"sa","");
//创建一个可以滚动的只读的SQL语句对象
sqlStmt =sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句
strSQL = "select user_id,user_name from userinfo order by user_id desc";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();//??光标在最后一行
intRowCount = sqlRst.getRow();//获得当前行号
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>会员管理</title>
</head>
<body>
<form method="POST" action="fenye1.jsp">
第<%=intPage%>页共<%=intPageCount%>页<%if(intPage<intPageCount){%><ahref="fenye1.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="fenye1.jsp?page=<%=intPage-1%>">上一页</a><%}%>
转到第:<input type="text" name="page" size="8"> 页
<span><input class=buttonface type=´submit´ value=´GO´ name=´cndok´></span>
</form>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>ID</th>
<th>用户名</th>
<th width=´8%´>删除</th>
</tr>
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
String user_id,user_name;
while(i<intPageSize && !sqlRst.isAfterLast()){
user_id=sqlRst.getString(1);
user_name=sqlRst.getString(2);
%>
<tr>
<td><%=user_id%></td>
<td><%=user_name%></td>
<td width=´8%´ align=´center´><a href="delete.jsp?user_id=<%=user_id%>"onClick="return newwin(this.href);">删除</a></td>
</tr>
<%
sqlRst.next();
i++;
}
}
%>
</table>
</body>
</html>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>
<%
String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs";
String pagesql,sql;
ResultSet pagers,rs;
int i;
int ipage=10; //分页单位
int allpage; //总页数
int pages; //接受的页码变量
int cpage=1; //当前页
int allCol=0; //总记录数
int beginpos=0; //每页开始位置
int endpos=0; //每页的结束位置 //注册驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection sqlCon = DriverManager.getConnection(url,"sa","sa"); Statement sqlStmt =sqlCon.createStatement(); //取总记录数
pagesql = "select count(*) as count from employee";
pagers = sqlStmt.executeQuery(pagesql);
if(pagers.next())
{
allCol = pagers.getInt("count");
} //获得总页面数
allpage = (allCol+ipage-1)/ipage;
//判断参数pages是否为空
if (request.getParameter("pages")==null)
{
pages=1;
beginpos=0;
endpos=ipage;
}
else
{
pages = new Integer(request.getParameter("pages")).intValue();
} //判断当前页
if(pages > allpage || pages <1)
{
cpage = 1; //-默认当前要显示的页码
beginpos=0; //-=默认记录开始的位置为0
endpos=ipage; //--默认结束位置为第一页的结尾
}
else
{
cpage = pages; //--当前要显示的页码
beginpos=pages*ipage-ipage; //--得到记录开始的位置
endpos=pages*ipage; //--得到记录结束的位置
}
sql = "select * from employee order by emp_id";
rs= sqlStmt.executeQuery(sql); //--得到要分页的结果集 for(i=0;i<beginpos;i++)
{
rs.next(); //--把结果集的记录数移到要显示的页的记录的开始位置
}
%>
<TABLE align=center bgColor=#000000 border=0 borderColor=#000000 cellSpacing=0 width="750">
<TR>
<TD>
<TABLE border=0 cellPadding=2 cellSpacing=1 width="100%">
<TR bgColor=#d14f00>
<TD align=middle width=50><B><FONT color=#ffffff>序号</FONT></B></TD>
<TD align=middle width=82><B><FONT color=#ffffff>姓</FONT></B></TD>
<TD align=middle width=200><B><FONT color=#ffffff>地址</FONT></B></TD>
<TD align=middle ><B><FONT color=#ffffff>名</FONT></B></TD> </TR>
<%
for(int j=beginpos;j<endpos;j++) //---从开始位置读取记录一直到结束位置
{
if(rs.next())
{ String emp_id=new String(rs.getString("emp_id").getBytes("8859_1"),"gb2312");
String fname=new String(rs.getString("fname").getBytes("8859_1"),"gb2312");
String minit=new String(rs.getString("minit").getBytes("8859_1"),"gb2312");
String lname=new String(rs.getString("lname").getBytes("8859_1"),"gb2312"); %>
<TR bgColor=#eeeeee>
<TD width=82><%=emp_id%></TD>
<TD align=middle width=90 ><%=fname%></TD>
<TD align=middle width=150><%=minit%></TD>
<TD align=middle width=150><%=lname%></TD> </TR>
<%
}
else break;
}
%>
</table>
</TD>
</TR>
</TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="750">
<TR>
<TD>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="750">
<TR bgColor=#d14f00>
<TD align=center>
<FONT color=#ffffff>
总计:<%= allCol %>条记录 |每页:<%=ipage%>条| 共 <%= allpage %>页 |
当前页为:<%=cpage%>/<%=allpage%> |
<% if (cpage>1)
{ %><a href="fy.jsp?pages=1"><FONT color=blue>第一页</a> |
<a href="fy.jsp?pages=<%= cpage-1 %>"><FONT color=blue>上一页 |</a>
<% }
if (cpage<allpage)
{ %><a href="fy.jsp?pages=<%= cpage+1 %>"><FONT color=blue>下一页</a> |
<a href="fy.jsp?pages=<%=allpage%>"><FONT color=blue>结尾页</a>
<% } %>
</FONT>
</TD>
</tr>
<tr bgColor=#d14f00 align=right>
<td ><form name=form1 method=post action=fy.jsp>
转到: <select name="pages" size="1">
<%
for(int m=0;m<allpage;m++)
{
%>
<option value="<%=m+1%>">第<%=m+1%>页</option>
<%
}
%>
</select>
<input name="B1" type="submit" tabindex="1" WIDTH="70" HEIGHT="20" value="跳 转" >
</td>
</TR>
</TABLE></form>
</TD>
</TR>
</TABLE>
</html>