JAVA/JSP學習系列之八(改寫MySQL翻頁例子)

來源:互聯網
上載者:User

一、前言

   其實,改寫後的JDBC Data-Source是運行在Servlet中的,通過JNDI去尋找資料來源。我用Orion試的,將本站《JAVA/JSP學習系列之六(MySQL翻頁例子) 》 簡單改寫了一下。

二、配置

(1)JDBC

   需要將用到的JDBC驅動Copy到[ORION]/lib目錄下

(2)data-source

   在[ORION]/config/data-sources.xml檔案中加入如下:

〈data-source

class="com.evermind.sql.DriverManagerDataSource"

name="mySqlDbpage"

location="jdbc/HypersonicCoreDS"

xa-location="jdbc/xa/HypersonicXADS"

ejb-location="jdbc/mysqlDbPage"

connection-driver="org.gjt.mm.mysql.Driver"

username="root"

password=""

url="jdbc:mysql://localhost/test"

inactivity-timeout="30"

/〉

需要注意的是:

(1)ejb-location這個後面的“jdbc/mysqlDbPage”是JNDI要來尋找的。

(2)connection-driver為JDBC資料庫驅動

(3)url是JDBC中的URL

(4)username為資料庫使用者名稱

(5)password為使用者密碼

(6)inactivity-timeout為資料庫連接逾時,預設為30秒

對於其他的地方不要改。

三、改寫後的代碼如下:

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

<%@ page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext" %>

<%

//建立一個JNDI尋找對象

InitialContext JNDI_Context = new InitialContext();

//JNDI尋找資料來源

DataSource ds = (DataSource) JNDI_Context.lookup("jdbc/mysqlDbPage");

//得到一個資料來源串連

Connection conn = ds.getConnection();

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;

}

// 得到結果

stmt = conn.createStatement();

ResultSet sqlRst = stmt.executeQuery("select f1 from test");

//擷取記錄總數

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 - mysql</title>

</head>

<body>

<table border="1" cellspacing="0" cellpadding="0">

<tr>

<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>

</tr>

<% sqlRst.next();

i++;

}

}

%>

</table>

第<%=intPage%>頁 共<%=intPageCount%>頁

<%if(intPage<intPageCount){%><a href="mysqlpage.jsp?page=<%=intPage+1%>">下一頁</a><%}%>

<%if(intPage>1){%><a href="mysqlpage.jsp?page=<%=intPage-1%>">上一頁</a><%}%>

</body>

</html>

<%

//關閉結果集

sqlRst.close();

%>

三、怎麼去運行?

   見前文《JAVA/JSP學習系列之五(JDBC-ODBC翻頁例子)》。

注意:MySQL資料庫為test,中間有個表test,有個欄位f1(varchar)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.