WebLogic下JSP串連資料庫

來源:互聯網
上載者:User

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();
     }
   
   
    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.