jsp与mysql的分页

发布网友 发布时间:2022-04-20 13:20

我来回答

5个回答

热心网友 时间:2022-04-09 07:22

<%@ page contentType="text/html;charset=8859_1" %>

<%
//变量声明
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 = 2;

//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}

//装载JDBC驱动程序
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

//设置数据库连接字符串
strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb";

//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq");

//创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);

//准备SQL语句
strSQL = "select name,age from test";

//执行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>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title>
</head>

<body>

<table border="1" cellspacing="0" cellpadding="0">
<tr>
<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>
</tr>
<%
sqlRst.next();
i++;
}
}
%>

</table>

第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="jdbc20-oracle.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="jdbc20-oracle.jsp?page=<%=intPage-1%>">上一页</a><%}%>

</body>
</html>

<%
//关闭结果集
sqlRst.close();

//关闭SQL语句对象
sqlStmt.close();

//关闭数据库
sqlCon.close();
%>

可以试试先!

祝你好运!
----------------------------------

也可以用jsp+xml+html来实现,下面给出一个saucer(思归)给的xml+html的分页例子,不妨参考一下:
<html>
<body>
<!--the following XML document is "stolen" from MSXML4 documentation-->
<xml id="xmldoc">
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
<book id="bk104">
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-03-10</publish_date>
<description>In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
for the inhabitants of London. Sequel to Maeve
Ascendant.</description>
</book>
<book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-09-10</publish_date>
<description>The two daughters of Maeve, half-sisters,
battle one another for control of England. Sequel to
Oberon's Legacy.</description>
</book>
<book id="bk106">
<author>Randall, Cynthia</author>
<title>Lover Birds</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-09-02</publish_date>
<description>When Carla meets Paul at an ornithology
conference, tempers fly as feathers get ruffled.</description>
</book>
<book id="bk107">
<author>Thurman, Paula</author>
<title>Splish Splash</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-11-02</publish_date>
<description>A deep sea diver finds true love twenty
thousand leagues beneath the sea.</description>
</book>
<book id="bk108">
<author>Knorr, Stefan</author>
<title>Creepy Crawlies</title>
<genre>Horror</genre>
<price>4.95</price>
<publish_date>2000-12-06</publish_date>
<description>An anthology of horror stories about roaches,
centipedes, scorpions and other insects.</description>
</book>
</catalog>
</xml>
<table id="mytable" datasrc="#xmldoc" border="1" DATAPAGESIZE="2">
<thead><th>Title</th><th>Author</th><th>Genre</th><th>Publish Date</th><th>Price</th></thead>
<tbody><tr>
<td><span datafld="title"></span></td>
<td><span datafld="author"></span></td>
<td><span datafld="genre"></span></td>
<td><span datafld="publish_date"></span></td>
<td><span datafld="price"></span></td>
</tr>
</tbody>
</table>
<input type="button" value="previous page" onclick="mytable.previousPage()">
<input type="button" value="next page" onclick="mytable.nextPage()">
</body>
</html>

------------------------------------
分页显示的模板程序
<!--show_page.jsp-->
<%@ page import="java.lang.*" import="java.sql.*" import="java.util.*" contentType="text/html;charset=GB2312"%>
<%@ page import="tax.*"%>
<jsp:useBean id="RegisterBean" class="tax.RegisterBean" scope="page"/>
<jsp:useBean id="itemlist" class="tax.itemlist" scope="page"/>

<%
int PageSize = 10;//设置一页显示的记录数
int PageNum = 1; //初始化页码=1
int PageNumCount = (136+PageSize-1) / PageSize;//记算总页数

//计算要显示的页码
String strPageNum = request.getParameter("page");//取得<href>提交的页码
if(strPageNum==null){ //表明在QueryString中没有page这一个参数,此时显示第一页数据
PageNum = 1;
}
else{
PageNum = java.lang.Integer.parseInt(strPageNum);//将字符串转换成整型
if(PageNum<1) PageNum = 1;
}

if(PageNum>PageNumCount) PageNum = PageNumCount;//调整待显示的页码
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP例程 - 数据分页显示 -JDK1.2 </title>
</head>
<body>
<%
if(PageNumCount>0){

out.println(PageNum);//显示数据,此处只简单的显示页数
}
/*需要显示的数据,在此处显示

、、、

例如:
*/
//显示一个简单的表格
%>

<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>总数</th>
<th>页数</th>
</tr>
<tr>
<th><%=PageNumCount%></th>
<th><%=PageNum%></th>
</tr>
</table>
第<%=PageNum%>页 共<%=PageNumCount%>页
<%if(PageNum<PageNumCount){%><a href="show_page.jsp?page=<%=PageNum+1%>">下一页</a><%}%>
<%if(PageNum>1){%><a href="show_page?page=<%=PageNum-1%>">上一页</a><%}%>
</body>
</html>
---------------------------------

一个bean,按照文档说的用。也希望你给出修改意见。
package mshtang.html;

/**
* <p>Title: DataBaseQuery</p>
* <p>Description: 用于数据库翻页查询操作</p>
* <p>Copyright: 厦门一方软件公司版权所有Copyright (c) 2002</p>
* <p>Company: 厦门一方软件公司</p>
* @author 小唐蔡
* @version 1.0
*/
import java.sql.*;
import javax.servlet.http.*;
import java.util.*;
import mshtang.StringAction;
public class DataBaseQuery
{

private HttpServletRequest request;
private StringAction S;
private String sql;
private String userPara;
private String[][] resultArray;
private String[] columnNameArray;
private String[] columnTypeArray;
private int pageSize;
private int columnCount;
private int currentPageNum;
private int currentPageRecordNum;
private int totalPages;
private int pageStartRecord;
private int totalRecord;
private static boolean initSuccessful;
private String currentJSPPageName;
private String displayMessage;

public DataBaseQuery()
{
S = new StringAction();
sql = "";
pageSize = 10;
totalRecord = 0;
initSuccessful = false;
currentJSPPageName = "";
displayMessage = "";
columnNameArray = null;
columnTypeArray = null;
currentPageRecordNum = 0;
columnCount = 0;
}

/**功能:数据库初始化操作,其它操作的前提。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
* @param pageSize:每页显示记录数;
* @param startPageNum:开始显示页码
*/
public void init(Connection conn, HttpServletRequest request, String querySQL, int pageSize, int startPageNum)
{
if(conn != null)
{
this.request = request;
this.sql = request.getParameter("querySQL");
this.userPara = request.getParameter("userPara");
if(sql == null || sql.equals(""))
{
sql = querySQL;
}
if(this.userPara == null)
{
this.userPara = "";
}
if(S.isContains(sql, "select;from", ";", true))
{
try
{
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
columnCount = rsmd.getColumnCount();
columnNameArray = new String[columnCount];
columnTypeArray = new String[columnCount];
String columnName;
String value;
while(rs.next())
{
totalRecord++;
if(totalRecord == 1)
{
for(int i = 0; i < columnCount; i++)
{
columnNameArray[i] = rsmd.getColumnName(i + 1);
columnTypeArray[i] = rsmd.getColumnTypeName(i + 1);
}
}
}
rs.close();
//在总记录数大于0的情况下进行下列操作

//获取链接图象
if(totalRecord > 0 && pageSize > 0 && columnCount > 0 && startPageNum > 0)
{
//获取总页数
totalPages = totalRecord / pageSize;
int tempNum = totalRecord % pageSize;
if(tempNum != 0)
{
totalPages++;
}

//获得当前页页码
String currentPage = request.getParameter("currentPageNum");
currentPageNum = (currentPage == null || currentPage.equals(""))? startPageNum:Integer.parseInt(currentPage);
currentPageNum = (currentPageNum > totalPages)?totalPages:currentPageNum;
currentPageNum = (currentPageNum <= 0)?1:currentPageNum;

//获得当前页起始显示记录数
pageStartRecord = (currentPageNum - 1) * pageSize + 1;
pageStartRecord = (pageStartRecord <= 0)?1:pageStartRecord;
pageStartRecord = (pageStartRecord > totalRecord)?totalRecord:pageStartRecord;

//获得当前页显示记录数
if(currentPageNum * pageSize > totalRecord)
{
currentPageRecordNum = totalRecord - (currentPageNum - 1) * pageSize;
}
else
{
currentPageRecordNum = pageSize;
}
resultArray = new String[currentPageRecordNum][columnCount];

//用于跳过前面不需显示的记录
int continueRowNum = 0;

//用于跳过后面不再显示的记录
int breakRowNum = 0;

ResultSet rs2 = st.executeQuery(sql);
while(rs2.next())
{
//跳过前面不需显示的记录
continueRowNum++;
if(continueRowNum < pageStartRecord)
{
continue;
}
//存取当前页需显示的记录到二维数组
for(int i = 0; i < columnCount; i++)
{
value = rs2.getString(columnNameArray[i]);
value = (value == null)?"":value.trim();
resultArray[breakRowNum][i] = value;
}
//跳过后面不再显示的记录
breakRowNum++;
if(breakRowNum >= currentPageRecordNum)
{
break;
}
}
rs2.close();
}
st.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
transferSQL(sql);
initSuccessful = true;
}
}

/**功能:数据库初始化操作,其它操作的前提,默认每页显示10条记录。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
* @param startPageNum:开始显示页码
*/
public void init(Connection conn, HttpServletRequest request, String querySQL, int startPageNum)
{
init(conn, request, querySQL, 10, startPageNum);
}

/**功能:数据库初始化操作,其它操作的前提,默认从第一页开始显示。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
* @param pageSize:每页显示记录数;
*/
public void init(Connection conn, HttpServletRequest request, int pageSize, String querySQL)
{
init(conn, request, querySQL, pageSize, 1);
}

/**功能:数据库初始化操作,其它操作的前提,默认从第一页开始显示,每页显示10条记录。
*
* @param conn:数据库连接;
* @param request:jsp页面request对象;
* @param querySQL:查询语句;
*/
public void init(Connection conn, HttpServletRequest request, String querySQL)
{
init(conn, request, querySQL, 10, 1);
}

/**功能:给出没有初始化的提醒信息,内部调用。
*
*/
private static void getMessage()
{
if(!initSuccessful)
{
System.out.println("没有完成初始化");
}
}

/**功能:得到查询结果的总记录数。
*
* @return
*/
public int getTotalRecord()
{
getMessage();
return totalRecord;
}

/**功能:得到当前页的页码
*
* @return
*/
public int getCurrentPageNum()
{
getMessage();
return currentPageNum;
}

/**功能:获得当前页记录数
*
* @return
*/
public int getCurrentPageRecord()
{
getMessage();
return currentPageRecordNum;
}
/**功能:获得总页数
*
* @return
*/
public int getTotalPages()
{
getMessage();
return totalPages;
}

/**获得调用该javaBean的jsp页面文件名,用于翻页操作,可以免去外界输入页面参数的错误,用于内部调用。
*
* @return:调用该javaBean的jsp页面文件名
*/
private String getCurrentJSPPageName()
{
getMessage();
if(request != null)
{
String tempPage = request.getRequestURI();
String[] tempArray = S.stringSplit(tempPage, "/");
if(tempArray != null && tempArray.length > 0)
{
currentJSPPageName = tempArray[tempArray.length - 1];
}
}
return currentJSPPageName;
}

/**功能:用于显示图片链接或字符串(上一页、下一页等链接)。用于翻页操作,内部调用
*
* @param imageSource:图片来源;
* @param i:翻页信息,1表示第一页,2表示上一页,3表示下一页,4表示尾页,
* @return:显示的链接图片或链接文字
*/
private void displayMessage(String imageSource, int i)
{
getMessage();
if(imageSource != null && !imageSource.equals(""))
{
displayMessage = "<img src=\"" + imageSource + "\" border=\"0\">";
}
else
{
switch(i)
{
case 1:
displayMessage = "<font size=\"2\">[首页]</font>";
break;
case 2:
displayMessage = "<font size=\"2\">[上一页]</font>";
break;
case 3:
displayMessage = "<font size=\"2\">[下一页]</font>";
break;
case 4:
displayMessage = "<font size=\"2\">[尾页]</font>";
}
}
}

/**功能:链接到相应页面,内部调用。
*
* @param imageSource:图片来源;
* @param i:翻页信息,1表示第一页,2表示上一页,3表示下一页,4表示尾页,
* @return:相应页面的链接
*/
private String getNavigation(String imageSource, int i)
{
displayMessage(imageSource, i);
int pageNum = 0;
switch(i)
{
case 1:
pageNum = 1;
break;
case 2:
pageNum = currentPageNum - 1;
break;
case 3:
pageNum = currentPageNum + 1;
break;
case 4:
pageNum = totalPages;
}
currentJSPPageName = "<a href=\"" + currentJSPPageName + "?currentPageNum=" + pageNum + "&querySQL=" + sql + userPara + "\">" + displayMessage + "</a>";
if(((currentPageNum == 1 || totalPages == 0) && (i == 1 || i == 2)) || (currentPageNum == totalPages && (i == 3 || i == 4)))
{
currentJSPPageName = displayMessage;
}
return currentJSPPageName;
}

/**功能:翻到第一页。以图片显示。
*
* @param imageSource
* @return
*/
public String firstPage(String imageSource)
{
return makePages(imageSource, 1);
}

/**功能:方法重载。翻到第一页,以文字显示。
*
* @return
*/
public String firstPage()
{
return firstPage("");
}

/**功能:翻到上一页,以图片显示链接。
*
* @return
*/
public String nextPage(String imageSource)
{
return makePages(imageSource, 3);
}

/**功能:方法重载。翻到下一页,以文字显示。
*
* @return
*/
public String nextPage()
{
return nextPage("");
}

/**功能:翻到上一页,以图片显示链接。
*
* @return
*/
public String previousPage(String imageSource)
{
return makePages(imageSource, 2);
}

/**功能:方法重载。翻到上一页,以文字显示。
*
* @return
*/
public String previousPage()
{
return previousPage("");
}

/**功能:方法重载。翻到尾页,以图片显示链接。
*
* @return
*/
public String lastPage(String imageSource)
{
return makePages(imageSource, 4);
}

/**功能:方法重载。翻到尾页,以文字显示链接。
*
* @return
*/
public String lastPage()
{
return lastPage("");
}

/**功能:得到查询记录中某字段的值。
*
* @param recordIndex:记录索引号,从0开始。
* @param columnName:字段名;
* @return:有结果返回该字段的值,否则为"";
*/
public String getColumnValue(int recordIndex, String columnName)
{
getMessage();
String columnValue = "";
if(recordIndex >=0 && recordIndex < currentPageRecordNum)
{
int columnIndex = S.findElementIndexOfArray(columnNameArray, columnName, true);
if(resultArray != null && columnIndex != -1)
{
columnValue = resultArray[recordIndex][columnIndex];
}
}
return columnValue;
}

/**功能:方法重载。返回特定行特定列的值。
*
* @param recordIndex:行索引,从0开始;
* @param columnIndex:列索引,从1开始;
* @return
*/
public String g

热心网友 时间:2022-04-09 08:40

这个特别简单,一次我就弄成了!不用该很多的,你看看,希望可以帮到你!
<%
int intPageSize=3; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage=1; //待显示页码
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;
}
//获取记录总数
rs.last();
intRowCount = rs.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
while(i<intPageSize && !rs.isAfterLast()){
%>
<tr>
<td class="text_green STYLE10"><%=rs.getString("biaoti")%></td>
<td class="text_green STYLE10"><div align="center"><%=rs.getDate("fbsj")%></div></td>
<td width="12%" bgcolor="#F1AC09" class="STYLE9"><div align="center"><a href="upadd1.jsp?id=<%=rs.getInt(1)%>" class="STYLE13">编辑</a></div></td>
<td width="12%" bgcolor="#F1AC09" class="STYLE9"><div align="center"><a href="delete.jsp?id=<%=rs.getInt(1)%>">删除</a></div></td>
</tr>
<br>
<br>
<tr>
<td colspan="4"><div align="center" class="text_orange STYLE10">
<%
rs.next();
i++;
}
}
%>
第<%=intPage%>页 共<%=intPageCount%>页 <br>
<a href="xxgl2.jsp?page=1">第一页</a>
<%if(intPage>1){%><a href="xxgl2.jsp?page=<%=intPage-1%>">上一页</a><%}%>
<%if(intPage<intPageCount){%><a href="xxgl2.jsp?page=<%=intPage+1%>">下一页</a><%}%>
<a href="index.jsp?page=<%=intPageCount%>">最后一页</a>

热心网友 时间:2022-04-09 10:14

给你个sql你参考下
select top 10 * from tab where id not in(select top 20 id from tab);
就是第三页。
自己写啊 ,很容易的

热心网友 时间:2022-04-09 12:06

www.open-open.com 搜索分页~

热心网友 时间:2022-04-09 14:14

f

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com