熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

jsp+oracle分頁實現

2013-11-23 19:09:50  來源: Java核心技術 

  今天做了個基於jsp+oracle分頁的實現對於初學者來說這是好的(看了後絕對可以自己實現動手試試把)但是對於有基礎的只是溫故下sql語句(沒涉及到很好的分層)好了我們開始把它實現把
   
    首先建立一個web項目(如圖)

  

  導入oracle驅動包到lib目錄下開編寫數據庫連接類DBMamager

  package compageutil;import javasqlConnection;import javasqlDriverManager;import javasqlPreparedStatement;import javasqlResultSet;import javasqlSQLException;public class DBManager {
   
    private static Connection connection = null;
   
    static
   
    {
   
    try {
   
    ClassforName(oraclejdbcdriverOracleDriver
   
    connection = DriverManagergetConnection(jdbc:oracle:thin:@::orcl************//自己oracle數據庫的帳號密碼
   
    } catch (ClassNotFoundException e) {
   
    // TODO Autogenerated catch block
   
    eprintStackTrace()
   
    } catch (SQLException e) {
   
    // TODO Autogenerated catch block
   
    eprintStackTrace()
   
    }
   
    }
   
    protected static Connection getConnection()
   
    {
   
    return connection;
   
    }
   
    public int update(String sql)
   
    {
   
    //boolean flag = false;
   
    int row = ;
   
    Connection connection = DBManagergetConnection()
   
    PreparedStatement statement = null;
   
    try
   
    {
   
    statement = connectionprepareStatement(sql)
   
    row= statementexecuteUpdate()
   
    //
   
    Systemoutprintln(sql)
   
    }
   
    catch (SQLException e)
   
    {
   
    eprintStackTrace()
   
    }
   
    return row;
   
    }
   
    public ResultSet find(String sql)
   
    {
   
    Connection connection = getConnection()
   
    ResultSet result = null;
   
    PreparedStatement statement = null;
   
    try
   
    {
   
    Systemoutprintln(sql)
   
    statement = connectionprepareStatement(sql)
   
    result = statementexecuteQuery()
   
    } catch (SQLException e)
   
    {
   
    eprintStackTrace()
   
    }
   
    return result;
   
    }}
   
    具體實現分頁的代碼如下(先看代碼後面有注釋別太心急慢慢看)
   
    <%@page import=comsuncryptoproviderRSACipher%><%@ page language=java import=javautil* pageEncoding=utf%><%@ page import=compageutil*%><%@ page import=javasql*  %><%String path = requestgetContextPath()String basePath = requestgetScheme()+://+requestgetServerName()+:+requestgetServerPort()+path+/;%><!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN><html>  <head>
   
    <base ;%=basePath%>>
   
    <title>用戶信息列表</title>
   
    <meta httpequiv=pragma content=nocache>
   
    <meta httpequiv=cachecontrol content=nocache>
   
    <meta httpequiv=expires content=>
   
    <meta httpequiv=keywords content=keywordkeywordkeyword>
   
    <meta httpequiv=description content=This is my page>
   
    <!
   
    <link rel=stylesheet type=text/css >
   
    >  </head>
   
    <body>
   
    <table align=center width=px border= cellspacing= cellpadding= >
   
    <tr align=center bgcolor=#E height=px>
   
    <th>編號</th>
   
    <th>用戶帳號</th>
   
    <th>用戶姓名</th>
   
    <th>用戶密碼</th>
   
    <th>用戶信息</th>
   
    </tr>
   
    <%
   
    int i;
   
    int page_size=; //分頁單位
   
    int all_pages; //總頁數
   
    int pages; //接受的頁碼變量
   
    int cur_page=; //當前頁
   
    int start_page; //本頁記錄開始
   
    int count_row; //總記錄數
   
    int end_page;//本頁記錄結束
   
    String sql_row=select count(id) as count_row from page;
   
    DBManager dbManager=new DBManager()
   
    ResultSet count_rs=dbManagerfind(sql_row)
   
    count_rsnext()
   
    count_row=count_rsgetInt(count_row
   
    all_pages=(int)Mathceil((count_row+page_size)/page_size)//計算總頁數
   
    //判斷參數pages是否為空
   
    if(requestgetParameter(pages)==null){
   
    pages=;
   
    }else{
   
    pages= new Integer(requestgetParameter(pages))intValue()
   
    }
   
    //判斷當前頁
   
    if(pages > all_pages || pages == ){
   
    cur_page = ;
   
    } else {
   
    cur_page = pages;
   
    }
   
    start_page=(cur_page)*page_size; //本頁開始的記錄編號數(數據庫中的第幾條數據)
   
    end_page=start_page+page_size;//本頁顯示的最後一條編號數
   
    String sql=select * from(select rownum rnp* from(select * from page )p where rownum<= +end_page+)where rn>+start_page+;
   
    ResultSet rsSet=dbManagerfind(sql)
   
    int t_row=;
   
    String color=#FFFFFF;
   
    while(rsSetnext()){
   
    if(t_row%==){
   
    //讓表格更加好看雙數行數時顯示不同顏色
   
    color=#EDFFC;
   
    }else{
   
    color=#FFFFFF;
   
    }
   
    %>
   
    <tr bgcolor=<%=color %》
   
    <td><%=rsSetgetString() %></td>
   
    <td><%=rsSetgetString() %></td>
   
    <td><%=rsSetgetString() %></td>
   
    <td><%=rsSetgetString() %></td>
   
    <td><%=rsSetgetString() %></td>
   
    </tr>
   
    <%
   
    t_row++;
   
    }
   
    %>
   
    <tr>
   
    <td colspan= align=right>
   
    <%if(cur_page>){%>//不在第一頁時顯示上一頁
   
    <a t;%=cur_page%>>上一頁</a>
   
    <%
   
    }
   
    if(cur_page<all_pages){//不在最後一行時顯示下一頁
   
    %>
   
    <a t;%=cur_page+%>>下一頁</a>
   
    <a t;%=all_pages%>>末頁</a>//顯示最後一頁
   
    <%
   
    }
   
    %>
   
    <% for (i=;i<=all_pages;i++) {%>// 循環顯示每一頁本頁時不顯示超鏈接(沒有下劃線)
   
    <% if (i != pages) {%>
   
    <a t;%= i %>><%= i %></a>
   
    <% } else{%>
   
    <%=i %>
   
    <%} %>
   
    <%}%>
   
    共<%=all_pages %>頁&nbsp;
   
    </td>
   
    </tr>
   
    </table>  </body></html>
   
    好了分頁已經完成了部署好tomcat運行網站吧!(如圖)
   
    第二頁
   
    第三頁
   
    第四頁
   
    注意
   
    總頁數的求取是all_pages=(int)Mathceil((count_row+page_size)/page_size)//計算總頁數
   
    sql語句是String sql=select * from(select rownum rnp* from(select * from page )p where rownum<= +end_page+)where rn>+start_page+;
   
    例如select *
   
    from
   
    (
   
    select rownum rnp*
   
    from
   
    (select *
   
    from page order by id
   
    )p where rownum<=
   
    )where rn>;//要用偽列!!
   
    最後附上我的sql代碼
   
    create table page(
   
    id varchar) not null
   
    username varchar) not null
   
    password varchar) not null
   
    info varchar) default 大家好很高興認識你們!
   
    constraints pk_id primary key(id))select * from page;delete page;drop table page;insert into page (idusernamepassword) values(黃凱insert into page (idusernamepasswordinfo) values(肖旺我是JJ林俊傑!insert into page (idusernamepassword) values(申俊傑qqqqinsert into page (idusernamepasswordinfo) values(楊小宇我班長!insert into page (idusernamepassword) values(許世群xxxxxxinsert into page (idusernamepasswordinfo) values(王東寶我寶爺!insert into page (idusernamepasswordinfo) values(adminadmin我管理員!insert into page (idusernamepasswordinfo) values(劉鵬我愛游戲!insert into page (idusernamepasswordinfo) values(劉永軍liu我少夜哈哈!update page set info=我是少爺哈哈!! where id=;select rownump* from page p where rownum between and ;select count(id) as a from page;select count(id) as count_row from page;select *
   
    from
   
    (
   
    select rownum rnp*
   
    from
   
    (select *
   
    from page order by id
   
    )p where rownum<=
   
    )where rn>;select *
   
    from
   
    (
   
    select rownum rnp*
   
    from
   
    (select *
   
    from page )p where rownum<=
   
    )where rn>
   
    在這裡我們的任務完成了在如果有什麼問題可以聯系我QQ:(一起交流)
   
    同時我也希望其他人能提供給我些分層的意見
   
    同時這裡沒有關閉數據庫的連接在自己的測試中出現過一個打開游標數超過最大值的問題大家能說說是不是沒關閉數據庫連接的問題?我是重新啟動下tomcat後就可以了的請指教!謝謝!
   
    祝大家工作順利學業有成!謝謝閱讀!


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26377.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.