纯JSP分页代码之sqlserver2005/2008

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

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

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

页面pagelistDemo.jsp内容:

<%@ 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); %> <%@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"%> 分页显示记录 <% //获取总记录数 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; } %>
分页显示记录 <%="总共" + RecordCount + "条记录 - 当前页:" + PageNo + "/" + MaxPage%>

<% long i = 1; while (rs.next()) { long bil = i + (PageNo - 1) * PageSize; %> <% i++; } %>
记录序号 数据标识号 产品名称 作者 提交时间 简介
<%=bil%> <%=rs.getString(1)%> <%=rs.getString(2)%> <%=rs.getString(3)%> <%=rs.getString(4)%> <%=rs.getString(5)%>

<% out.print(""); //显示第一页或者前一页的链接 //如果当前页不是第1页,则显示第一页和前一页的链接 if (PageNo != 1) { PrevStart = PageNo - 1; out.print("第一页 : "); out.print("前一页"); } 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 + ""); } else { out.print("" + c + " ,"); } } else { if (PageNo == MaxPage) { out.print(c); break; } else { out.print("" + c + ""); break; } } } out.print("]"); ; if (PageNo < MaxPage) { //如果当前页不是最后一页,则显示下一页链接 NextPage = PageNo + 1; out.print("下一页"); } //同时如果当前页不是最后一页,要显示最后一页的链接 if (PageNo < MaxPage) { LastRec = RecordCount % PageSize; if (LastRec == 0) { LastStartRecord = RecordCount - PageSize; } else { LastStartRecord = RecordCount - LastRec; } out.print(":"); out.print("最后一页"); } out.print(""); %>
<% rs.close(); statement.close(); connection.close(); %>  

 

 用到的类文件:Globals.java

/** * */ package net.data.util; /** *//** * @author Administrator * */ public class Globals { public static String username="sa"; public static String pwd="sa"; public static String DbName="TestData"; //public static String Server="192.168.30.6"; public static String Server="192.168.44.2:1433"; public static String Port="1433"; public static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; // public static String connectionURL { // // return "jdbc:sqlserver://"+Server+":"+Port+";databaseName="+DbName; // } }  

 

效果如图:

纯JSP分页代码之sqlserver2005/2008_第1张图片  

 

你可能感兴趣的:(Eclipse,JDBC,Utility,SQL,Java,sqlserver,jsp,string,class,border,import)