WebLogic下JSP串連資料庫
草木瓜 2006-5-26
一、前言
JSP開發,一般來說需要前端開發工具和後台服務。WebLogic是整合了工具和服務的大型系統。
需要重視的是,BEA公司的WebLogic最低要求配置記憶體512M,即使對伺服器參數檔案做最佳化,
仍然不能根本解決問題。
二、安裝配置WebLogic
Windows安裝沒什麼好說的。
安裝後,WebLogic自動建了三個伺服器(workshop,integration,portal),使用者可以選擇,不爽的
也可以自行建立,建立方面的內容《WebLogic Domain 配置方法》一文已有非常詳盡的講述。簡單的
方法是從模板選所擇,這裡選擇 工具->WebLogic Server->設定精靈 的basic weblogic workshop
domain模板。
三、建立應用程式,添加Web項目,
網域服務器建立好了,選擇 檔案->建立->應用程式,選擇服務囂,選擇應用程式,完成建立。在所建
應用程式裡添加Web項目。
四、Web應用
添加資料庫Web應用。在Web項目裡,添加Jsp檔案和Java Class。本例使用index.jsp,error.jsp,
clsdb.java,db.properties四個檔案。
目錄結構如下:
應用程式名稱/Web項目名/WEB-INF/...
應用程式名稱/Web項目名/index.jsp
應用程式名稱/Web項目名/error.jsp
應用程式名稱/Web項目名/db.properties
應用程式名稱/Web項目名/javacls/clsdb.java
index.jsp 起始頁面,資料瀏覽
--------------------------------------------------
<body>
<%
javacls.clsDb db=new javacls.clsDb();
boolean i;
i=db.openConnection();
if(i=true)
{
java.sql.ResultSet rs=db.exeQuery("select d from test");
rs.next();
while(!rs.isAfterLast())
{
out.println(rs.getObject(1));
rs.next();
}
}
%>
</body>
error.jsp 錯誤顯示頁面
--------------------------------------------------
<p>
發生錯誤
<br>
錯誤描述:
<%=exception.toString()%>
<br>
錯誤原因:
<%=exception.getMessage()%>
</p>
clsdb.java 資料庫操作類,非常典型的資料庫應用方法
--------------------------------------------------
package javabean;
public class clsDb
{
java.sql.Connection cn=null;
java.sql.Statement sqlstm=null;
java.sql.ResultSet rs=null;
public clsDb()
{}
//開啟資料庫連接
public boolean openConnection()
{
//讀取設定
java.util.Properties prop=new java.util.Properties();
try
{
java.io.InputStream in=this.getClass().getResourceAsStream("../db.properties");
prop.load(in);
if(in!=null)in.close();
}
catch(java.io.IOException e)
{
System.out.println("[OpenCn] 設定檔開啟錯誤! ");
return false;
}
String jdbc=prop.getProperty("drivers");
String url=prop.getProperty("url");
String user=prop.getProperty("user");
String password=prop.getProperty("password");
//載入JDBC
try
{
Class.forName(jdbc);
}
catch(java.lang.ClassNotFoundException e)
{
System.out.println("[OpenCn] 裝載JDBC驅動出錯! ");
return false;
}
//開啟資料庫連接
try
{
this.cn=java.sql.DriverManager.getConnection(url,user,password);
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
return true;
}
//執行查詢
public java.sql.ResultSet exeQuery(String _sqlstring)
{
try
{
this.sqlstm=this.cn.createStatement();
this.rs=this.sqlstm.executeQuery(_sqlstring);
return this.rs;
}
catch(Exception e)
{
e.printStackTrace();//此外用於列印錯誤堆棧
return null;
}
}
//執行更新
public void exeNonQuery(String _sqlstring) throws java.sql.SQLException
{
this.sqlstm=this.cn.createStatement();
this.sqlstm.executeUpdate(_sqlstring);
if(this.sqlstm!=null)this.sqlstm.close();
}
//關閉對象
public void close() throws java.sql.SQLException
{
if(this.rs!=null)this.rs.close();
if(this.sqlstm!=null)this.sqlstm.close();
if(this.cn!=null)this.cn.close();
}
protected void finalize() throws Throwable
{
this.close();
}
}
db.properties 資料庫設定檔
--------------------------------------------------
drivers=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:wincn
user=liwei
password=liwei
五、重要補充說明:本篇文章別的都是廢話,惟獨這段不是!
本例使用的jdbc驅動是oracle提供的,java只提供驅動的介面,具體必須由各資料庫廠商來實現。如果
環境變數等沒有配置正確,找不到包,可以在 應用程式名稱/Web項目名/庫 下添加驅動包。
drivers=oracle.jdbc.driver.OracleDriver這個包的位置在E:/oracle/ora92/jdbc/lib/classes12.jar
查看包的資訊就知道,寫成oracle.jdbc.OracleDriver也是可以的。
url一項內容是資料庫的具體對象,前面jdbc:oracle:thin表明是通過jdbc,而且是oracle提供的驅動包,
thin是oracle的串連方式。下面@後面是主機名稱或主機地址+連接埠,最後一項是資料庫執行個體名SID。
注意:
在調試過程中WebLogic會提示找不到類oracle.jdbc.dirver.OracleDriver的檔案,這個提示完全是誤判,
是不是bug不得而知!不用理會繼續執行!
在串連中文字元集(ZHS16GBK)資料庫不會出現亂碼,如果串連英文字元集(US7ASCII)則會出現。解決方案
是作些必要的轉換。前提是用戶端與服務囂的字元集要一致。
index.jsp 檔案內容更改
while(!rs.isAfterLast())
{
String test=rs.getString(1);
byte[] tempbyte=test.getBytes("ISO8859-1");
String temp=new String(tempbyte,"gb2312");
out.println(temp);
rs.next();
}