好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

纯JSP分页代码之sqlserver2005/2008

昨天看到一篇《 纯JSP分页代码 》的文章,是用于mysql,稍微修改下,用于Sqlserver2005/2008,没有异常处理。没有考虑性能等。 现将代码贴出,以供初学者参考: 注:邀月使用环境Eclipse 3.4.2+Tomcat 6.18+Sqlserver2005 sp3调试成功。 页面pagelistDemo.js

昨天看到一篇《 纯JSP分页代码 》的文章,是用于mysql,稍微修改下,用于Sqlserver2005/2008,没有异常处理。没有考虑性能等。

现将代码贴出,以供初学者参考:

注:邀月使用环境Eclipse 3.4.2+Tomcat 6.18+Sqlserver2005 sp3调试成功。

页面pagelistDemo.jsp内容:

Code
@ page language = " java " contentType = " text/html; charset=UTF-8 "
pageEncoding = " UTF-8 " %>

// 连接字符串
String url = " jdbc:sqlserver:// " + Globals.Server
+ " ;databaseName= " + Globals.DbName;
Class.forName(Globals.driverName).newInstance();
Connection connection = DriverManager.getConnection(url,
Globals.username, Globals.pwd);
Statement statement = connection.createStatement();

// 每页显示记录数
int PageSize = 10 ;
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 );
%>
DOCTYPE html PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " " http://HdhCmsTestw3.org/TR/html4/loose.dtd " >

@page import = " net.data.util.Globals " %>
@page import = " java.sql.ResultSet " %>
@page import = " java.sql.DriverManager " %>
@page import = " java.sql.Connection " %>
@page import = " java.sql.Statement " %>
element >
html >
head >
meta http - equiv = " Content-Type " content = " text/html; charset=UTF-8 " >
title > 分页显示记录 title >
link rel = " stylesheet " href = " style.css " type = " text/css " >
head >

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

// 取特定页数的数据
String strColumn = " P_ID,P_Name,LoginID,modTime,P_SingleIntro " ;
String strTable = " Product " ;
String strSort = " p_ID desc " ;
String PKID = " P_ID " ;
String strSql = "" ;
String strWhere = "" ;
String START_ID = Integer.toString((PageNo - 1 ) * PageSize + 1 );
String END_ID = Integer.toString(PageNo * PageSize);
strSql = " SELECT " + strColumn
+ " FROM (SELECT ROW_NUMBER() OVER(ORDER BY " + strSort
+ " ) AS rownum, " + strColumn + " FROM " + strTable
+ " WITH(NOLOCK) " + strWhere
+ " ) AS D WHERE rownum BETWEEN " + START_ID + " AND "
+ END_ID + " ORDER BY " + strSort;
rs = statement.executeQuery(strSql);

// 获取总页数
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 >
td class = " InternalHeader " > 简介 td >
tr >


long i = 1 ;
while (rs.next()) {
long 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 >
td class = " NormalFieldTwo " > rs.getString( 5 ) %> td >
tr >

i ++ ;
}
%>
table >
br >
table width = " 100% " border = " 0 " class = " InternalHeader " >
tr >
td >
div align = " center " >

out.print( " " );
// 显示第一页或者前一页的链接
// 如果当前页不是第1页,则显示第一页和前一页的链接
if (PageNo != 1 ) {
PrevStart = PageNo - 1 ;
out.print( " 第一页 : " );
out.print( " " + PrevStart
+ " >前一页 " );
}
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( " " + c + " > " + c
+ " " );
查看更多关于纯JSP分页代码之sqlserver2005/2008的详细内容...

  阅读:36次