WebLogic下JSP连接数据库


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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值