JSP的Init和Destory函數提高工作效率
用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對象來建立數
據庫鏈接。
以下是代碼實例:
- //定義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方法
- }
- }
【編輯推薦】