JavaServer Pages+JavaBeans的數據庫操作應用
上面已經講了一個簡單的JavaBean應用的計數器例子,當然在實際程序過程中,涉及的更多的還是和數據庫相關的操作,所以在這一節我們將重點闡述JavaServer Pages和JavaBeans如何對數據庫進行操作。這里我們選取了一個比較有代表性比較實用的例子,那就是用戶注冊管理,因為這在網上使用比較的頻繁,不管是注冊Email、有獎調查、購買物品或者加入社區等等都會涉及到一個用戶注冊的問題;另外一方面,它又比較有代表性,涉及到了數據庫的記錄增加,記錄顯示等常見操作,所以我們就拿用戶注冊開刀了。
程序采用Oracle Jdeveloper3.1開發,運行環境為Wiin2000+Tomcat3.1,數據庫系統采用了Oracle8.16i。
首先我們建立一個數據庫demodb,其字段如下面所示
username VARCHAR2(20) 用戶名 password VARCHAR2(20) 密碼 email VARCHAR2(30) Email地址 homepage VARCHAR2(50) 主頁 signs VARCHAR2(200) 簽名 regtime DATE 注冊時間
接著我們建立幾個JavaBeans和JavaServer Pages文件
db.java文件(封裝數據庫連接及一些底層操作) adduser.java文件(進行用戶數據的讀取以及添加操作) newuser.jsp文件(用戶新增頁面,用于輸入用戶注冊信息) donewuser.jsp文件(進行用戶注冊信息添加) listuser.jsp文件(所有的注冊用戶信息列表)
為了方便大家看代碼,在很多地方都進行了詳細的注釋和講解,至于JavaBean中涉及到Java語法結構的東西,請大家參考Java書籍。
db.java文件
說明:這個JavaBean封裝數據庫連接及一些底層操作,派生出的類可以直接調用這些方法,另外提供了一個toChinese方法,主要用來進行中文數據的處理。
// Copyright (c) 2000 http://jspbbs.yeah.net package lyf; /** * A Class class. * $#@60;P$#@62; * @author liuyufeng */
//聲明類庫文件 import oracle.jdbc.driver.*; import java.net.*; import java.sql.*; import java.lang.*; import java.io.*; import java.util.*; public class db br> //成員變量初始化 Connection conn = null; //數據庫連接 ResultSet rs = null; //記錄集 String Username=""; //用戶名 String Password=""; //密碼 String Email=""; //email String Homepage=""; //主頁 String Signs=""; //簽名 //db的構建器 public db() { try { //注冊數據庫驅動程序為Oracle驅動 Class.forName(new oracle.jdbc.driver.OracleDriver()); } catch(java.lang.ClassNotFoundException e) { //這樣寫是為了方便調試程序,出錯打印mydb()就知道在什么地方出錯了 System.err.println("mydb(): " + e.getMessage()); } }
//executeQuery方法用于進行記錄的查詢操作
//入口參數為sql語句,返回ResultSet對象 public ResultSet executeQuery(String sql) { rs = null; try { //建立數據庫連接,使用Oracle的一種thin連接方式,demo為主機名字,demodb為數據庫,后面的兩個demo為用戶名和密碼 conn = DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo"); Statement stmt = conn.createStatement(); //執行數據庫查詢操作 rs = stmt.executeQuery(sql); } catch(SQLException ex) { System.err.println("db.executeQuery: " + ex.getMessage()); } return rs; }
//executeUpdate方法用于進行add或者update記錄的操作
//入口參數為sql語句,成功返回true,否則為false public boolean executeUpdate(String sql) { boolean bupdate=false; rs = null; try { //建立數據庫連接,其它參數說明同上面的一樣 conn = DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo"); Statement stmt = conn.createStatement(); int rowCount = stmt.executeUpdate(sql); //如果不成功,bupdate就會返回0 if(rowCount!=0)bupdate=true; } catch(SQLException ex) { //打印出錯信息 System.err.println("db.executeUpdate: " + ex.getMessage()); } return bupdate; }
//toChinese方法用于將一個字符串進行中文處理
//否則將會是???這樣的字符串 public static String toChinese(String strvalue) { try{ if(strvalue==null) { return null; } else { strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK"); return strvalue; } }catch(Exception e){ return null; } }
}
|