亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsp讀取數據庫實現分頁技術簡析

2020-07-27 21:39:44
字體:
來源:轉載
供稿:網友
這篇文章介紹的是用javabean和jsp頁面來實現數據的分頁顯示,例子中所使用的數據庫是Mysql。

1、先看javabean
類名:
databaseBean.java:
以下為databaseBean.java的代碼:
復制代碼 代碼如下:

package database_basic;
import java.sql.*;
import java.util.*;
public class databaseBean
{
//這是默認的數據庫連接方式
private String DBLocation="jdbc:mysql://localhost/onestoptech?user=root&password=password&useUnicode=true&characterEncoding=GB2312";
private String DBDriver="org.gjt.mm.mysql.Driver";
private Connection conn=null;
public databaseBean(){}
//通過set方法可以靈活設置數據庫的連接
public void setDBLocation(String location){DBLocation=location;}
public void setDBDriver(String driver){DBDriver=driver;}
public void setconn(Connection conn){this.conn=conn;}
public String getDBLocation(){return(DBLocation);}
public String getDBDriver(){return(DBDriver);}
public Connection getconn(){return(conn);}
/*public String DBConnect(){}
public String DBDisconnect(){}
public ResultSet query(String sql){}
public int getTotalPage(String sql,int pageSize){}
public ResultSet getPagedRs(String sql,int pageSize,int pageNumber){}
public String execute_sql(String sql){}*/
//建立連接
public String DBConnect()
{
String strExc="Success!";//strExc默認為Success,如果有例外拋出,即數據庫連接不成功,則下面幾個catch中被賦予其他拋出信息
try
{
Class.forName(DBDriver);
conn=DriverManager.getConnection(DBLocation);
}
catch(ClassNotFoundException e)
{
strExc="數據庫驅動沒有找到,錯誤提示:<br>" +e.toString();
}
catch(SQLException e)
{
strExc="sql語句錯誤,錯誤提示<br>" +e.toString();
}
catch(Exception e)
{
strExc="錯誤提示:<br>" +e.toString();
}
return (strExc);
}//then end of DBConnect
//斷開連接
public String DBDisconnect()
{
String strExc="Success!";//strExc默認為Success,如果有例外拋出,即數據庫斷開連接不成功,則下面幾個catch中被賦予其他拋出信息
try
{
if(conn!=null)conn.close();
}
catch(SQLException e)
{
strExc=e.toString();
}
return (strExc);
}
//通過傳入sql語句來返回一個結果集
public ResultSet query(String sql) throws SQLException,Exception
{
ResultSet rs=null;
if (conn==null)
{
DBConnect();
}
if (conn==null)
{
rs=null;
}
else
{
try
{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){throw new SQLException("Cound not execute query.");}
catch(Exception e){throw new Exception("Cound not execute query.");}
}//then end of if
return(rs);
}//then end of the function executeQuery
//通過傳入sql語句和pageSize(每頁所顯示的結果數目)計算并返回總共的頁數
public int getTotalPage(String sql,int pageSize)
{
ResultSet rs=null;
int totalRows=0;
if (conn==null)
{
DBConnect();
}
if (conn==null)
{
rs=null;
}
else
try
{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);//通過傳入的sql得到結果集
while(rs.next())
totalRows++;//讓rs一個個數,數完一遍,通過totalRows++也就計算出了返回結果集中總的條目數
}
catch(SQLException e){}
rs=null;
//由這個算法得出總頁數(totalRows-1)/pageSize+1,并返回結果。totalRows是指返回結果集中的總的條目數,pageSize是指每頁顯示的條目數
return((totalRows-1)/pageSize+1);
}
//通過傳入sql語句,每頁顯示的條目數(pageSize)和頁碼,得到一個結果集
public ResultSet getPagedRs(String sql,int pageSize,int pageNumber)
{
ResultSet rs=null;
int absoluteLocation;
if (conn==null)
{
DBConnect();
}
if (conn==null)
{
rs=null;
}
else
try
{
Statement s=conn.createStatement();
//pageSize*pageNumber每頁顯示的條目數乘以頁碼,計算出最后一行結果的編號,任何編號大于這個maxrows的結果都會被drop
s.setMaxRows(pageSize*pageNumber);
rs=s.executeQuery(sql);
}
catch(SQLException e){}
//absoluteLocation=pageSize*(pageNumber-1)這個表達式計算出上一頁最后一個結果的編號(如果有本頁的話,上一頁的顯示的結果條目數肯定是pageSize)
absoluteLocation=pageSize*(pageNumber-1);
try
{
//這個for循環的作用是讓結果集rs定位到本頁之前的最后一個結果處
for(int i=0;i<absoluteLocation;i++)
{
rs.next();
}
}
catch(SQLException e) { }
//此時返回的結果集被兩頭一夾,就是該頁(pageNumber)要顯示的結果
return(rs);
}
public String execute_sql(String sql){
String strExc;
strExc="Success!";
if(conn!=null)
{
try{
PreparedStatement update;
update=conn.prepareStatement(sql);
update.execute();
}
catch(SQLException e)
{
strExc=e.toString();
}
catch(Exception e)
{
strExc=e.toString();
}
}
else
{
strExc="Connection Lost!";
}
return(strExc);
}//execute_sql

2、分析jsp頁面
頁面名稱:
admin_show.jsp
頁面代碼:
復制代碼 代碼如下:

<%@ page errorPage="error.jsp"%>
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
//導入database_basic包下面的databaseBean類,別名是basicDB
<jsp:useBean id="basicDB" class="database_basic.databaseBean" scope="page"/>
<%
String sql;
ResultSet rs;
int id;
String reply,Exc;
Exc=basicDB.DBConnect();//建立連接,若成功,則返回Success!若失敗,則返回相應出錯信息
if(!Exc.equals("Success!"))
{
//basicDB.DBDisconnect();
throw new Exception(Exc);
}
int pageSize=10; //定義每頁顯示的數據條數
int currentPage=1; //當前頁(第一次顯示的肯定是第一頁啦!~),以后的“當前頁”由下面出現的頁面中的pages參數傳入
int allPage=-1;
String pages=request.getParameter("pages");//取得頁面中pages參數,此參數代表的頁面的就是要顯示的“當前頁面”
if(pages!=null) currentPage=Integer.valueOf(pages).intValue();//這是一個Integer型轉int型的例子,第一次執行這個頁面的時候,pages這個參數是null,currentPage=1;當再次執行這個頁面的時候,參數pages將被賦值,currentPage=pages的int值
sql="select * from gbook order by id desc";//這樣返回的結果集會采用desc降序排列,好處是,顯示在前面的是最新的信息
allPage=basicDB.getTotalPage(sql,pageSize);//得到總頁碼數
rs=basicDB.getPagedRs(sql,pageSize,currentPage);//得到當前頁面要顯示的結果集
%>
<table border="0" cellspacing="1" cellpadding="3" width="590" bgcolor="#ffffff">
<%
while(rs.next()){
id=rs.getInt("id");//得到數據庫(結果集)中id編號
%>
<tr bgcolor="#FF6600" style="color:white">
<td >Name:<%=rs.getString("leaver")%></td>
<td >Time:<%=rs.getString("leave_date")%></td>
<td >Email:<%=rs.getString("email")%></td>
<td ><div style="width:150;overflow:hidden;">Home:<%=rs.getString("homepage")%></div></td>
</tr>
<tr bgcolor="#FFE3B9">
<td colspan=4><FONT COLOR="#FF6600">Content:</FONT><BR><BR><%=rs.getString("content")%> </td>
</tr>
<%}%>
<tr><td height="1"></td></tr>
<tr>
<td colspan=4 align=right bgcolor="#FF6600" style="color:white;">
現在是第<%=currentPage%>頁,
<%if(currentPage>1){%>
<!--如果不在第一頁,則顯示出“首頁”鏈接-->
<A HREF="admin_show.jsp?pages=<%=(currentPage-1)%>">首頁</A>
<%}
for(int i=1;i<=allPage;i++)
{
//顯示出1、2、3、4……到最后一頁的鏈接
out.println("<a href=admin_show.jsp?pages="+i+">"+i+"</a>");
}
%>
<%if(currentPage<allPage){%>
<!--如果不在最后一頁,則顯示出“末頁”鏈接-->
<A HREF="admin_show.jsp?pages=<%=(currentPage+1)%>">末頁</A>
<%}%></td>
</tr>
</table>
}//then end of the class

3、總結
這個實現分頁顯示的程序中,有幾個算法和實現方法是比較固定且經典的,對沒寫過分頁程序的人來說,應該有所啟發。
上一篇:jsp 標準標簽庫簡析

下一篇:JSP學習筆記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人亚洲福利一区二区三区| 亚洲国产精品免费| 国产亚洲激情在线| 国产91成人video| 国产一区二区三区18| 国产精品久久视频| www亚洲欧美| 伊人激情综合网| 国产精品揄拍500视频| 亚洲伊人成综合成人网| 日韩有码在线播放| 欧美一性一乱一交一视频| **欧美日韩vr在线| 国产精品视频999| 国产精品美女www爽爽爽视频| 日韩电影中文字幕在线观看| 亚洲视屏在线播放| 91亚洲精品一区| 国产成人啪精品视频免费网| 91九色国产在线| 欧美黑人xxxⅹ高潮交| 最近的2019中文字幕免费一页| 免费97视频在线精品国自产拍| 欧洲s码亚洲m码精品一区| 国产日韩欧美电影在线观看| 日本最新高清不卡中文字幕| 久久免费成人精品视频| 国产91精品青草社区| 欧美国产日韩一区二区在线观看| 中文一区二区视频| 国产精品自拍视频| 久久视频在线观看免费| 亚洲视频精品在线| 欧美亚洲另类制服自拍| 国产+成+人+亚洲欧洲| 亚洲自拍小视频| 91香蕉国产在线观看| 美女性感视频久久久| 欧美xxxx18国产| 国产欧美日韩免费| 777国产偷窥盗摄精品视频| 国内精品一区二区三区四区| 成人精品在线观看| 国内精品久久久久影院优| 911国产网站尤物在线观看| 欧美激情综合亚洲一二区| 日韩欧美成人网| 久久精品电影一区二区| 欧美大尺度电影在线观看| 26uuu另类亚洲欧美日本老年| 成人免费视频网| 亚洲欧美福利视频| 久久人人爽人人| 国语自产精品视频在线看一大j8| 国产精品自产拍在线观看中文| 不卡av电影在线观看| 人人做人人澡人人爽欧美| 91精品视频免费观看| 亚洲成人aaa| 欧美精品www在线观看| 亚洲精品日韩在线| 中日韩午夜理伦电影免费| 欧美成人三级视频网站| 成人午夜在线视频一区| 国产精品99久久99久久久二8| 国产精品国产亚洲伊人久久| 国产91亚洲精品| 夜夜躁日日躁狠狠久久88av| 欧洲亚洲女同hd| 主播福利视频一区| 亚洲精品99久久久久中文字幕| 亚洲成年人影院在线| 国产精品三级美女白浆呻吟| 欧美日韩黄色大片| 亚洲国产精品人人爽夜夜爽| 欧美成人精品h版在线观看| 亚洲最大在线视频| 国产美女精品免费电影| 综合激情国产一区| 精品国内产的精品视频在线观看| 亚洲男人天堂九九视频| 97久久精品人搡人人玩| 2019中文在线观看| 久久在线视频在线| 深夜精品寂寞黄网站在线观看| 51色欧美片视频在线观看| 激情久久av一区av二区av三区| 亚洲综合日韩在线| 久久久国产精彩视频美女艺术照福利| 久久久国产精品亚洲一区| 亚洲美女中文字幕| 成人在线视频网站| 欧美日韩激情小视频| 亚洲国产女人aaa毛片在线| 一区二区欧美亚洲| 在线免费观看羞羞视频一区二区| 欧美性xxxx极品hd欧美风情| 日韩成人在线视频观看| 久久福利网址导航| 欧美成人免费观看| 国产不卡av在线免费观看| 国产精品劲爆视频| 日韩精品高清在线| 国产剧情久久久久久| 亚洲国产精品字幕| 亚洲精品网址在线观看| 91在线视频导航| 亚洲片在线观看| 91po在线观看91精品国产性色| 亚洲精品av在线播放| 欧美国产在线视频| 亚洲自拍欧美另类| 亚洲黄在线观看| 777777777亚洲妇女| 伊人青青综合网站| 国产99久久精品一区二区| 96精品视频在线| 日韩最新免费不卡| 亚洲白拍色综合图区| 日本久久久久久久| 中文字幕久精品免费视频| 久久夜色精品国产欧美乱| 欧美乱人伦中文字幕在线| 最近更新的2019中文字幕| 亚洲xxx大片| 国产在线观看不卡| 精品久久久一区| 911国产网站尤物在线观看| 欧美一级视频免费在线观看| 亚洲第一级黄色片| 精品久久久国产精品999| 91精品久久久久久久| 亚洲高清免费观看高清完整版| 亚洲在线视频福利| 亚洲女人天堂色在线7777| 欧美激情一区二区三区成人| 亚洲精品久久久一区二区三区| 久久久久久一区二区三区| 992tv成人免费视频| www.午夜精品| 亚洲成年网站在线观看| 欧美日韩在线观看视频| 中文字幕亚洲字幕| 成人妇女免费播放久久久| 上原亚衣av一区二区三区| 亚洲在线视频福利| 久久综合久久美利坚合众国| 91欧美精品午夜性色福利在线| 久久久久久久色| 久久久女人电视剧免费播放下载| 亚洲精品视频中文字幕| 久久97久久97精品免视看| 97在线看福利| 97视频在线观看亚洲| 日韩欧美在线观看| 久久精品视频va| 91在线观看免费观看| 中文字幕精品网| 操91在线视频| 日韩一区二区欧美| 91九色精品视频| 国产精品视频区1| 中文字幕日韩精品有码视频| 91精品国产91久久久久久不卡|