求jsp像百度一样显示数字的分页显示? 做到一个项目想要用jsp像百度一样显示数字的分页, 如下效果: < <上一页 1 2 3 4 5 6 7 8 9 10 下一页> > 不显示数字的分页我会,我思考了一下显示数字的分页要用到判断考虑, 请高手指点一下应怎么写?最好给点代码.谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你已经知道查出来的有多少页了,再相应的分页BEAN里进行判断,应该差不多吧 我做出来了一个但是当点击数字分页时总跑到第一页为什么?请高手指点!我的代码如下<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*"%><%@ page import="java.io.*"%> <html><title>Jsp分页显示记录</title><body bgcolor="#ffffff"> <% //变量声明 Connection sqlCon; //数据库连接对象 Statement sqlStmt; //SQL语句对象 ResultSet sqlRst; //结果集对象 String strSQL; //SQL语句 %><%int intPageSize; //一页显示的记录数 int intRowCount; //记录总数 int intPageCount; //总页数 int intPage; //待显示页码 int CounterStart=0;//每页页码的初始值int CounterEnd=0;//显示页码的最大值String strPage; %><%int i; //设置一页显示的记录数 intPageSize = 3; //取得待显示页码 strPage = request.getParameter("page"); if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; } else{//将字符串转换成整型 intPage = Integer.parseInt(strPage); if(intPage<1) intPage = 1; } //装载JDBC驱动程序 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url="jdbc:oracle:thin:@localhost:1521:myoracle";//orcl为你的数据库的SIDString user="system";String password="manager";sqlCon= DriverManager.getConnection(url,user,password);sqlStmt=sqlCon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//准备SQL语句 strSQL = "select * from fabuxxqy"; //执行SQL语句并获取结果集 sqlRst = sqlStmt.executeQuery(strSQL); //获取记录总数 sqlRst.last(); intRowCount = sqlRst.getRow(); //记算总页数 intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount; %><%//-------------//设置显示页码的初始值if(intPage % intPageSize == 0){ CounterStart = intPage - (intPageSize - 1);%><%}else{ CounterStart = intPage - (intPage % intPageSize) + 1;}CounterEnd = CounterStart + (intPageSize - 1); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - MYSQL</title> </head> <body> <table border="1" cellspacing="0" cellpadding="0"> <tr> <th>ID</th> <th>姓名</th> <th>密码</th> </tr> <% if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据 i = 0; while(i<intPageSize && !sqlRst.isAfterLast()){ %> <tr> <td><%=sqlRst.getString(1)%></td> <td><%=sqlRst.getString(2)%></td> <td><%=sqlRst.getString(3)%></td> </tr> <% sqlRst.next(); i++; } } %> </table> 第<%=intPage%>页 共<%=intPageCount%>页 <br><!--<a href="2.jsp?page=1">第一页</a>--><%if(intPage>1){%><a href="2.jsp?page=<%=intPage-1%>">上一页</a><%}%> <%/////////////////////////////////for(int c=CounterStart;c<=CounterEnd;c++){ if(c <intPageCount){ if(c == intPage){ if(c %intPageSize == 0){ out.print(c); }else{ out.print(c+" ,"); } }else if(c % intPageSize == 0){ out.print("<a href=2.jsp?Page="+c+">"+c+"</a>"); }else{ out.print("<a href=2.jsp?Page="+c+">"+c+"</a> ,"); } }else{ if(intPage == intPageCount){ out.print(c); break; }else{ out.print("<a href=2.jsp?Page="+c+">"+c+"</a>"); break; } } }////////////////////%><%if(intPage<intPageCount){%><a href="2.jsp?page=<%=intPage+1%>">下一页</a><%}%> <!--<a href="2.jsp?page=<%//=intPageCount%>">最后一页</a>--></body> </html> <% //关闭结果集 sqlRst.close(); //关闭SQL语句对象 sqlStmt.close(); //关闭数据库 sqlCon.close(); %> <%@ page language="java" pageEncoding="GB2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>仿BAIDU 分页页码显示格式</title> <style> <!-- body{ .p{ PADDING-LEFT: 18px; FONT-SIZE: 14px; WORD-SPACING: 4px } } --> </style> </head> <body> <div class="p"> <% int pagesize = 10;//每页显示记录数 int liststep = 20;//最多显示分页页数 int pages = 1;//默认显示第一页 if (request.getParameter("pages") != null){ pages = Integer.parseInt(request.getParameter("pages"));//分页页码变量 } //取出记录总数,把*换成记录名性能更加 //sql="select count(*) from table"; int count = 305;//假设取出记录总数 //求总页数ceil(num)取整不小于num int pagescount = (int) Math.ceil((double) count / pagesize); if (pagescount < pages){ pages = pagescount;//如果分页变量大总页数,则将分页变量设计为总页数 } if (pages < 1){ pages = 1;//如果分页变量小于1,则将分页变量设为1 } //从第几页开始显示分页信息 int listbegin = (pages - (int) Math.ceil((double) liststep / 2)); if (listbegin < 1){ listbegin = 1; } int listend = pages + liststep/2;//分页信息显示到第几页 if (listend > pagescount){ listend = pagescount + 1; } //显示数据部分 int recordbegin = (pages - 1) * pagesize;//起始记录 int recordend = 0; recordend = recordbegin + pagesize; //最后一页记录显示处理 if (pages == pagescount){ recordend = (int) (recordbegin + pagesize * (count % pagesize) * 0.1); } //Connection conn = null;//要测试显示数据请自己链接数据库 //PreparedStatement stmt = null; //取出分页记录,SQL因数据库而异 //String strSql = "select * from usertable limit recordbegin,pagesize";! //stmt = conn.prepareStatement(strSql); //ResultSet rs = stmt.executeQuery(); //while(rs.next())){ //显示取出的数据 // response.getWriter().println(""+rs.getString("userId")+"<br>"); //} for (int i = recordbegin; i < recordend; i++) { response.getWriter().println("record " + i + "<br>"); } //显示数据部分 //<显示分页信息 //<显示上一页 if (pages > 1){ response.getWriter().println( "<a href=?pages=" + (pages - 1) + ">上一页</a>"); }//>显示上一页 //<显示分页码 for (int i = listbegin; i < listend; i++) ...{ if (i != pages) {//如果i不等于当前页 response.getWriter().println( "<a href=?pages=" + i + ">[" + i + "]</a>"); } else{ response.getWriter().println("[" + i + "]"); } }//显示分页码> //<显示下一页 if (pages != pagescount){ response.getWriter().println( "<a href=?pages=" + (pages + 1) + ">下一页</a>"); }//>显示下一页 //>显示分页信息 %> </div> </body></html> 请问楼上的 cnku88是如何实现的呢?能否贴出来呢? 问一个 综合 的 问题 动态菜单树的制作 怎么用JSTL标签打印request中的异常信息? JSP网页如何接收VC客户端POST的数据? [高手帮忙]Tomcat至今没有解决的问题!!! 关于Date类的奇怪问题,请大家帮忙! 关于inc文件和asa文件的问题? 想学javamail,想找个不要钱的邮件服务器,大家推荐几个好不好?参与有分 关注Tomcat4.0的大虾,请进。。。。。。。。。。。。。。。。。 javascript 可以实现在linux 的执行命令或者执行一个shell脚本吗? 输入输出的问题 这样写存储过程对吗?用于搜索
但是当点击数字分页时总跑到第一页
为什么?请高手指点!
我的代码如下<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<html>
<title>Jsp分页显示记录</title><body bgcolor="#ffffff">
<% //变量声明
Connection sqlCon; //数据库连接对象
Statement sqlStmt; //SQL语句对象
ResultSet sqlRst; //结果集对象
String strSQL; //SQL语句
%>
<%
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
int CounterStart=0;//每页页码的初始值
int CounterEnd=0;//显示页码的最大值
String strPage;
%>
<%
int i; //设置一页显示的记录数
intPageSize = 3; //取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
//装载JDBC驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:myoracle";
//orcl为你的数据库的SID
String user="system";
String password="manager";
sqlCon= DriverManager.getConnection(url,user,password);
sqlStmt=sqlCon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//准备SQL语句
strSQL = "select * from fabuxxqy";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%><%
//-------------
//设置显示页码的初始值
if(intPage % intPageSize == 0){
CounterStart = intPage - (intPageSize - 1);%>
<%
}else{
CounterStart = intPage - (intPage % intPageSize) + 1;
}
CounterEnd = CounterStart + (intPageSize - 1);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - MYSQL</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>ID</th>
<th>姓名</th>
<th>密码</th>
</tr>
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){
%>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
<td><%=sqlRst.getString(3)%></td>
</tr>
<%
sqlRst.next();
i++;
}
}
%>
</table>
第<%=intPage%>页 共<%=intPageCount%>页 <br>
<!--<a href="2.jsp?page=1">第一页</a>-->
<%if(intPage>1){%><a href="2.jsp?page=<%=intPage-1%>">上一页</a><%}%>
<%/////////////////////////////////
for(int c=CounterStart;c<=CounterEnd;c++){
if(c <intPageCount){
if(c == intPage){
if(c %intPageSize == 0){
out.print(c);
}else{
out.print(c+" ,");
}
}else if(c % intPageSize == 0){
out.print("<a href=2.jsp?Page="+c+">"+c+"</a>");
}else{
out.print("<a href=2.jsp?Page="+c+">"+c+"</a> ,");
}
}else{
if(intPage == intPageCount){
out.print(c);
break;
}else{
out.print("<a href=2.jsp?Page="+c+">"+c+"</a>");
break;
}
}
}
////////////////////%><%if(intPage<intPageCount){%><a href="2.jsp?page=<%=intPage+1%>">下一页</a><%}%>
<!--<a href="2.jsp?page=<%//=intPageCount%>">最后一页</a>-->
</body>
</html>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>仿BAIDU 分页页码显示格式</title>
<style>
<!--
body{
.p{
PADDING-LEFT: 18px; FONT-SIZE: 14px; WORD-SPACING: 4px
}
}
-->
</style>
</head> <body>
<div class="p">
<%
int pagesize = 10;//每页显示记录数
int liststep = 20;//最多显示分页页数
int pages = 1;//默认显示第一页
if (request.getParameter("pages") != null){
pages = Integer.parseInt(request.getParameter("pages"));//分页页码变量
}
//取出记录总数,把*换成记录名性能更加
//sql="select count(*) from table";
int count = 305;//假设取出记录总数
//求总页数ceil(num)取整不小于num
int pagescount = (int) Math.ceil((double) count / pagesize);
if (pagescount < pages){
pages = pagescount;//如果分页变量大总页数,则将分页变量设计为总页数
}
if (pages < 1){
pages = 1;//如果分页变量小于1,则将分页变量设为1
}
//从第几页开始显示分页信息
int listbegin = (pages - (int) Math.ceil((double) liststep / 2));
if (listbegin < 1){
listbegin = 1;
}
int listend = pages + liststep/2;//分页信息显示到第几页
if (listend > pagescount){
listend = pagescount + 1;
} //显示数据部分
int recordbegin = (pages - 1) * pagesize;//起始记录
int recordend = 0;
recordend = recordbegin + pagesize;
//最后一页记录显示处理
if (pages == pagescount){
recordend = (int) (recordbegin + pagesize * (count % pagesize) * 0.1);
}
//Connection conn = null;//要测试显示数据请自己链接数据库
//PreparedStatement stmt = null;
//取出分页记录,SQL因数据库而异
//String strSql = "select * from usertable limit recordbegin,pagesize";!
//stmt = conn.prepareStatement(strSql);
//ResultSet rs = stmt.executeQuery();
//while(rs.next())){
//显示取出的数据
// response.getWriter().println(""+rs.getString("userId")+"<br>");
//}
for (int i = recordbegin; i < recordend; i++) {
response.getWriter().println("record " + i + "<br>");
} //显示数据部分 //<显示分页信息
//<显示上一页
if (pages > 1){
response.getWriter().println(
"<a href=?pages=" + (pages - 1) + ">上一页</a>");
}//>显示上一页
//<显示分页码
for (int i = listbegin; i < listend; i++) ...{
if (i != pages) {//如果i不等于当前页
response.getWriter().println(
"<a href=?pages=" + i + ">[" + i + "]</a>");
} else{
response.getWriter().println("[" + i + "]");
}
}//显示分页码>
//<显示下一页
if (pages != pagescount){
response.getWriter().println(
"<a href=?pages=" + (pages + 1) + ">下一页</a>");
}//>显示下一页
//>显示分页信息
%>
</div>
</body>
</html>