Oracle大数据量分页显示的初步实现


代码才是硬道理,本人喜欢把话语权交给代码,请往下看。。

首先是web.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <servlet>  
  7.         <servlet-name>Mp3</servlet-name>  
  8.         <servlet-class>com.jadyer.servlet.Mp3Servlet</servlet-class>  
  9.     </servlet>  
  10.     <servlet-mapping>  
  11.         <servlet-name>Mp3</servlet-name>  
  12.         <url-pattern>/servlet/Mp3</url-pattern>  
  13.     </servlet-mapping>  
  14.        
  15.     <!-- 在version="2.5"中,可以直接在<welcome-file-list>里执行Servlet应用 -->  
  16.     <welcome-file-list>  
  17.         <welcome-file>servlet/Mp3</welcome-file>  
  18.     </welcome-file-list>  
  19. </web-app>  

用到的实体类Mp3.java

 

  1. package com.jadyer.model;   
  2.   
  3. public class Mp3 {   
  4.     private Integer id;    //歌曲编号   
  5.     private String name;   //歌曲名   
  6.     private String singer; //歌曲演唱者   
  7.     private String author; //歌曲作者   
  8.     private Double size;   //歌曲大小   
  9.     /*--它们的setter和getter略--*/  
  10. }  

这是我们自定义的异常类MyRuntimeException.java

  1. package com.jadyer.exception;   
  2.   
  3. /**  
  4.  * 自定义异常类  
  5.  */  
  6. @SuppressWarnings("serial")   
  7. public class MyRuntimeException extends RuntimeException {   
  8.     /**  
  9.      * 直接构造一个RuntimeException  
  10.      * @see 而不抛任何东西  
  11.      */  
  12.     public MyRuntimeException() {   
  13.         super();   
  14.     }   
  15.   
  16.     /**  
  17.      * 只抛出提示信息  
  18.      * @param message---错误提示信息  
  19.      */  
  20.     public MyRuntimeException(String message) {   
  21.         super(message);   
  22.     }   
  23.   
  24.     /**  
  25.      * 只抛出异常类对象  
  26.      * @param cause-----所抛出的异常类对象  
  27.      */  
  28.     public MyRuntimeException(Throwable cause) {   
  29.         super(cause);   
  30.     }   
  31.        
  32.     /**  
  33.      * 抛出提示信息和异常类对象  
  34.      * @param message---错误提示信息  
  35.      * @param cause-----所抛出的异常类对象  
  36.      * @see 一般情况下都使用该方法  
  37.      */  
  38.     public MyRuntimeException(String message, Throwable cause) {   
  39.         super(message, cause);   
  40.     }   
  41. }  

这是用于连接Oracle数据库的工具类OracleConnUtil.java

 

  1. package com.jadyer.util;   
  2.   
  3. import java.sql.Connection;   
  4. import java.sql.DriverManager;   
  5. import java.sql.PreparedStatement;   
  6. import java.sql.ResultSet;   
  7. import java.sql.SQLException;   
  8.   
  9. import com.jadyer.exception.MyRuntimeException;   
  10.   
  11. /**  
  12.  * 我们的目的是只装载一次驱动类,这时有两个办法可以实现  
  13.  * @see 第一个办法是使用单子模式。使用该模式的人居多  
  14.  * @see 第二个办法是使用static语句块  
  15.  * @see public OracleConnUtil(){}  
  16.  * @see static{  
  17.  * @see     try {  
  18.  * @see         Class.forName(DB_DRIVER);  
  19.  * @see     } catch (ClassNotFoundException e) {  
  20.  * @see         e.printStackTrace();  
  21.  * @see         throw new MyRuntimeException("数据库驱动装载失败", e);  
  22.  * @see     }  
  23.  * @see }  
  24.  */  
  25. public class OracleConnUtil {   
  26.     //由于以下四个都是常量,所以用final修饰   
  27.     //那么既然是常量,所以在内存中只存在一份就可以了,所以用static修饰   
  28.     //并且final和static是经常在一起使用的   
  29.     private static final String DB_DRIVER = "oracle.jdbc.OracleDriver";   
  30.     private static final String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:jadyer";   
  31.     private static final String DB_USERNAME = "scott";   
  32.     private static final String DB_PASSWORD = "jadyer";   
  33.     private static OracleConnUtil oracleConn;   
  34.     Connection conn = null;   
  35.        
  36.     /**  
  37.      * 获得数据库连接的实例  
  38.      */  
  39.     public static OracleConnUtil getInstance(){   
  40.         if(null == oracleConn){   
  41.             oracleConn = new OracleConnUtil();   
  42.         }   
  43.         return oracleConn;   
  44.     }   
  45.        
  46.     /**  
  47.      * 装载数据库驱动  
  48.      */  
  49.     private OracleConnUtil(){   
  50.         try {   
  51.             Class.forName(DB_DRIVER);   
  52.         } catch (ClassNotFoundException e) {   
  53.             e.printStackTrace();   
  54.             throw new MyRuntimeException("数据库驱动装载失败", e);   
  55.         }   
  56.     }   
  57.        
  58.     /**  
  59.      * 连接数据库  
  60.      */  
  61.     public Connection getConnection(){   
  62.         try {   
  63.             conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);   
  64.         } catch (SQLException e) {   
  65.             e.printStackTrace();   
  66.             //我们完全可以测试一下,没有启动MySQL服务的情况下,运行项目   
  67.             //这时会在浏览器中显示很多异常信息,并提示这里自定义的消息:【数据库连接失败】   
  68.             throw new MyRuntimeException("数据库连接失败", e);   
  69.         }   
  70.         return conn;   
  71.     }   
  72.        
  73.     /**  
  74.      * 关闭数据库链接  
  75.      */  
  76.     public static void close(ResultSet rs, PreparedStatement ps, Connection conn){   
  77.         try {   
  78.             if(rs!=null){   
  79.                 rs.close();   
  80.             }   
  81.         } catch (SQLException e) {   
  82.             e.printStackTrace();   
  83.         }   
  84.         try {   
  85.             if(ps!=null){   
  86.                 ps.close();   
  87.             }   
  88.         } catch (SQLException e) {   
  89.             e.printStackTrace();   
  90.         }   
  91.         try {   
  92.             if(conn!=null){   
  93.                 conn.close();   
  94.             }   
  95.         } catch (SQLException e) {   
  96.             e.printStackTrace();   
  97.         }   
  98.     }   
  99. }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 下一页

相关内容