jsp分页显示

jsp分页显示

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.sql.*" %>

<script language="javascript">
function newwin(url) {
var newwin=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.Result

Set.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){%><a

href="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();
%>

jsp 分页代码
====================================================
这是从一个PHP分页代码改的,没有异常处理,也没有利用java面向对象的特点,仅能帮助了解分页的逻辑和页码处理,供参考。源码中带有mysql中的数据库,方便调试,请下载。
下面是TestPage.jsp

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%
//驱动程序名,比较旧了,如果你用mysql5,自己改。
String driverName="org.gjt.mm.mysql.Driver";
String userName="root";//数据库用户名
String userPasswd="";//密码

String dbName="bookstore";//数据库名
String tableName="items"; //表名

//运行图:


//连接字符串
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName(driverName).newInstance();
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();

//每页显示记录数
int PageSize = 8;
int StartRow = 0; //开始显示记录的编号
int PageNo=0;//需要显示的页数
int CounterStart=0;//每页页码的初始值
int CounterEnd=0;//显示页码的最大值
int RecordCount=0;//总记录数;
int MaxPage=0;//总页数
int PrevStart=0;//前一页
int NextPage=0;//下一页
int LastRec=0;
int LastStartRecord=0;//最后一页开始显示记录的编号

//获取需要显示的页数,由用户提交
if(request.getParameter("PageNo")==null){ //如果为空,则表示第1页
   if(StartRow == 0){
      PageNo = StartRow + 1; //设定为1
   }
}else{
   PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数
   StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号
}

//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示
//一定数量的页面链接

//设置显示页码的初始值!!
   if(PageNo % PageSize == 0){
    CounterStart = PageNo - (PageSize - 1);
   }else{
    CounterStart = PageNo - (PageNo % PageSize) + 1;
   }

CounterEnd = CounterStart + (PageSize - 1);
%>

<html>
<head>
<title>分页显示记录</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<%

//获取总记录数
ResultSet rs = statement.executeQuery("select count(*) from items" );
rs.next();
RecordCount = rs.getInt(1);

rs = statement.executeQuery("SELECT image_url,author,price,item_id FROM items ORDER BY item_id DESC LIMIT "
        +StartRow+", "+PageSize);

//获取总页数
MaxPage = RecordCount % PageSize;
if(RecordCount % PageSize == 0){
   MaxPage = RecordCount / PageSize;
}else{
    MaxPage = RecordCount/PageSize+1;
}
%>
<body class="UsePageBg">
<table width="100%" border="0" class="InternalHeader">
<tr>
    <td width="24%"><font size=4>分页显示记录</font></td>
     <td width="76%">
        <font size=4><%="总共"+RecordCount+"条记录 - 当前页:"+PageNo+"/"+MaxPage %></font>
     </td>
</tr>
</table>

<br>
<table width="100%" border="0" class="NormalTableTwo">
   <tr>
     <td class="InternalHeader">记录序号</td>
     <td class="InternalHeader" >图像路径</td>
     <td class="InternalHeader" >作者</td>
     <td class="InternalHeader" >价格</td>
     <td class="InternalHeader" >图书编号</td>
   </tr>

<%
int i = 1;
while (rs.next()) {
   int bil = i + (PageNo-1)*PageSize;
%>
<tr>
     <td class="NormalFieldTwo" ><%=bil %></td>
     <td class="NormalFieldTwo" ><%=rs.getString(1)%></td>
     <td class="NormalFieldTwo" ><%=rs.getString(2)%></td>
     <td class="NormalFieldTwo" ><%=rs.getString(3)%></td>
     <td class="NormalFieldTwo" ><%=rs.getString(4)%></td>
   </tr>
<%
   i++;
}%>
</table>
><br>
<table width="100%" border="0" class="InternalHeader">
   <tr>
    <td><div align="center">
<%
    out.print("<font size=4>");
   //显示第一页或者前一页的链接
   //如果当前页不是第1页,则显示第一页和前一页的链接
   if(PageNo != 1){
     PrevStart = PageNo - 1;
     out.print("<a href=TestPage.jsp?PageNo=1>第一页 </a>: ");
     out.print("<a href=TestPage.jsp?PageNo="+PrevStart+">前一页</a>");
   }
   out.print("[");

    //打印需要显示的页码
    for(int c=CounterStart;c<=CounterEnd;c++){
    if(c <MaxPage){
      if(c == PageNo){
        if(c %PageSize == 0){
          out.print(c);
        }else{
           out.print(c+" ,");
        }
      }else if(c % PageSize == 0){
         out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>");
      }else{
         out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a> ,");
      }
    }else{
      if(PageNo == MaxPage){
       out.print(c);
       break;
      }else{
         out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>");
      break;
    }
   }
}

out.print("]");;

if(PageNo < MaxPage){ //如果当前页不是最后一页,则显示下一页链接
     NextPage = PageNo + 1;
     out.print("<a href=TestPage.jsp?PageNo="+NextPage+">下一页</a>");
}

//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo < MaxPage){
    LastRec = RecordCount % PageSize;
    if(LastRec == 0){
       LastStartRecord = RecordCount - PageSize;
    }
    else{
       LastStartRecord = RecordCount - LastRec;
    }

    out.print(":");
     out.print("<a href=TestPage.jsp?PageNo="+MaxPage+">最后一页</a>");
   }
   out.print("</font>");
%>
</div>
</td>
</tr>
</table>
<%
   rs.close();
   statement.close();
    connection.close();
%>
</body>
</html>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值