技术开发 频道

优化jsp链接数据库

  【IT168 技术文档】

  用jdbc-odbc桥来连接,不过这可是牺牲了速度来的。用jdbc-odbc桥的话,和连接access是一样的,先要设置一个数据源DNS,然后就用:

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  Connection conn=DriverManager.getConnection("jdbc:odbc:strurl",”
  username”,”password”);

  进行数据库的链接是比较耗时的,如果频繁刷新页面,那就会不停的访问数据库,大大耗去了数据库的资源。Jsp提供了这样一对函数,jspInit(),jspDestory();如果要在jsp网页开始执行时,进行某些数据的初始化,则可以利用jspInit函数来完成。此函数将在jsp网页被执行时调用,且当jsp网页重新整理时,并不会被再度执行。当关闭服务器时,jspDestory函数将被调用,可利用该函数来完成数据的善后处理。

  可以利用jspInit和jspDestory函数来完成数据库的链接和关闭。在jspInit中进行数据库的链接,可以避免每次刷新页面时都要链接数据库,提高了工作效率。

  以下是代码实例:

  <%!   Connection conn=null;   Statement st=null;   ResultSet rs=null;   Public void jspInit()   {    Try    {   //加载驱动程序类    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);    //连接数据库   Connection conn=DriverManager.getConnection("jdbc:odbc:strurl",”   username”,”password”);   //建立Statement对象   St=conn.CreateStatement();   }   Catch(Exception ex)   {   System.out.println(ex.toString());   }   }   Public void jspDestroy()   {   try   {    rs.close();   st.,close();    conn.close();    }    catch(Exception ex)    {    System.out.println(ex.toString());    }   }   %>

  当jsp网页从数据库中取得数据时,最耗费服务器时间的是建立数据库链接。用jspInit
和jspDestory函数并不是非常好的办法,毕竟每浏览一次新网页,就要建立数据库链
接。这个时候可以为一个联机者建立一个数据库链接。这里我们利用Bean对象来建立数
据库链接。

  以下是代码实例:

  conn.java   //定义bean所属的套件   package com.test;   import java.io.*;   import java.sql.*;   import javax.servlet.http.*;   public class conn implements HttpSessionBindingListener   {   private Connection con=null;   public conn() //在构造函数中完成数据库链接   {   BulidConnection();   }   private void BulidConnection()   {   try   {   //载入驱动程序   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   }   catch(java.lang.ClassNotFoundException e1)   {   System.out.println("数据库驱动加载失败<br>");   }   try   {   //建立数据库链接   con=DriverManager.getConnection("jdbc:odbc:test","test","test");   }   catch(SQLException e2)   {   System.out.println("数据库连接失败");   }   }   //取得Connection对象   public Connection getConnection()   {   if(con==null)   BulidConnection();   return this.con;   }   public void close()   {   try   {   con.close();   con=null;   }   catch(SQLException sex)   {   System.out.println(sex.toString());   }   }   //当物体加入session时,将自动执行此函数   public void valueBound(HttpSessionBindingEvent event){}   //当session对象删除时,将自动执行此函数   public void valueUnbound(HttpSessionBindingEvent event)   {   if(con!=null)   close();//调用close方法   }   }
0
相关文章