开发者社区> 技术小阿哥> 正文

Tomcat5.5链接Oracle、DB2、MySQL数据源实现JSP下拉框的填充

简介:
+关注继续查看
一、建立表,并填充数据:
建表的Oracle SQL如下:
――――――――――――――――――
create table DM_HY
(
  HY_DM VARCHAR2(
6) not null,
  HY_MC VARCHAR2(
200) not null,
  MLBZ  CHAR(
1) not null,
  DLBZ  CHAR(
1) not null,
  ZLBZ  CHAR(
1) not null,
  XLBZ  CHAR(
1) not null,
  FQHY  VARCHAR2(
6),
  XYBZ  CHAR(
1) not null
);
-- Add comments to the table 
comment on table DM_HY
  is 
'行业代码表';
-- Add comments to the columns 
comment on column DM_HY.HY_DM
  is 
'行业代码';
comment on column DM_HY.HY_MC
  is 
'行业名称';
comment on column DM_HY.MLBZ
  is 
'门类标志';
comment on column DM_HY.DLBZ
  is 
'大类标志';
comment on column DM_HY.ZLBZ
  is 
'中类标志';
comment on column DM_HY.XLBZ
  is 
'小类标志';
comment on column DM_HY.FQHY
  is 
'父亲类型';
comment on column DM_HY.XYBZ
  is 
'选用标志';
 
插入数据:
insert into DM_HY (HY_DM, HY_MC, MLBZ, DLBZ, ZLBZ, XLBZ, FQHY, XYBZ)
values (
'01''农、林、牧、渔业''Y''N''N''N', null, 'Y');
insert into DM_HY (HY_DM, HY_MC, MLBZ, DLBZ, ZLBZ, XLBZ, FQHY, XYBZ)
values (
'010200''林业''N''Y''Y''Y''01''Y');
。。。。。。
二、配置数据源
配置方法:根据数据库类型修改apache-tomcat-5.5.20\conf下的context.xml内容为:
1、  Tomcat种的Oracle数据源
―――――――――――――――――――――――――――
<!-- The contents of this file will be loaded for each web application -->
<Context privileged='true'>
              <Resource name="zfvims/zfvimsds"
                      auth="Container"
                   type="javax.sql.DataSource"
                            driverClassName="oracle.jdbc.driver.OracleDriver"
                   url="jdbc:oracle:thin:@192.168.0. 2:1521: orcl"
                   username=" zfvims"
                   password="leizhimin"
                   maxIdle="30"
                   maxWait="10000"
                   maxActive="100"
                   removeAbandoned="true"
                            removeAbandonedTimeout="60"
                            logAbandoned="true"/>
</Context>
―――――――――――――――――――――――――――
 
2、  Tocmat中的DB2数据源
―――――――――――――――――――――――――――
<!-- The contents of this file will be loaded for each web application -->
<Context privileged='true'>
              <Resource name="zfvims/zfvimsds"
                      auth="Container"
                   type="javax.sql.DataSource"
                            driverClassName="com.ibm.db2.jcc.DB2Driver"
                   url="jdbc:db2: zfvims"
                   username=“zfvims”
                   password=" leizhimin"
                   maxIdle="30"
                   maxWait="10000"
                   maxActive="100"
                   removeAbandoned="true"
                            removeAbandonedTimeout="60"
                            logAbandoned="true"/>
</Context>
―――――――――――――――――――――――――――
 
3、  Tocmat中的MySQL数据源
―――――――――――――――――――――――――――
<!-- The contents of this file will be loaded for each web application -->
<Context privileged='true'>
              <Resource name="zfvims/zfvimsds"
                      auth="Container"
                   type="javax.sql.DataSource"
                            driverClassName=" com.mysql.jdbc.Driver "
                   url=" jdbc:mysql://192.168.0.2:3306/zfvims"
                   username=“zfvims”
                   password=" leizhimin"
                   maxIdle="30"
                   maxWait="10000"
                   maxActive="100"
                   removeAbandoned="true"
                            removeAbandonedTimeout="60"
                            logAbandoned="true"/>
</Context>
―――――――――――――――――――――――――――
 
注意OracleDB2 JDBC连接的URL有较大差别,其中Oracleurl="jdbc:oracle:thin:@192.168.3.12:1521:orcl"orcl表示数据库SID,一个SID下面的可以有多个用户,每个用户对应自己的数据库。DB2url="jdbc:db2:zfvims"其中的zfvims是数据库的别名;MySQL中的url=" jdbc:mysql://192.168.0.2:3306/zfvims"其中的zfvims却是数据库的实名。
三、写工具类
package com.zfvims.common.utils;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
 
/**
 * File Name:  PageComboxOptions.java
 * Created by: IntelliJ IDEA.
 * Copyright:  Copyright (c) 2003-2006
 * Author:      leizhimin
 * Modifier:    leizhimin
 * Date Time: 2006-11-29 8:58:42
 * Readme:   jsp页面中的选择控件(Combox)之选项列表获取工具类
 */
public final class PageComboxOptions {
    private static final Log log = LogFactory.getLog(PageComboxOptions.class);
    private static Connection conn;
    private static Statement stmt;
    private static ResultSet rs;
    //行业类别SQL
    private static final String SQL_HYLB = "select '<option value=\"' || t.hy_dm || '\">' || t.hy_dm || '-' || t.hy_mc || '</option>' from dm_hy t order by t.hy_dm";
 
    static {
        try {
            //建立数据库连接
            Context ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("java:comp/env/zfvims/zfvimsds");
            conn = ds.getConnection();
        } catch (Exception e) {
            log.error("获取数据库链接出现错误,请检查PageComboxOptions.java和连接池的配置!");
            e.printStackTrace();
        }
    }
 
    /**
     * @return 获取行业类别下拉列表HTML
     */
    public static String getOptionsHYLB() {
        String optionHTML = "";
        try {
            conn.setAutoCommit(false);
            //创建一个JDBC声明
            stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
            //执行查询
            rs = stmt.executeQuery(SQL_HYLB);
            optionHTML = result2String(rs);
            //关闭数据库连结
            rs.close();
            stmt.close();
        } catch (SQLException e) {
            log.error("查询行业类别出错,请检查!");
            e.printStackTrace();
        }
        return optionHTML;
    }
 
    /**
     * @return 结果集的String组合串
     */
    private static String result2String(ResultSet rs) throws SQLException {
        String optionHTML = "";
        while (rs.next()) {
            optionHTML = optionHTML + rs.getString(1);
        }
        return optionHTML;
    }
}
 
说明:这个工具类会一直占用一个数据库连接,为所有需要展示代码表的页面服务。这比每次当页面有代码表需要展示的时候,调用后台方法获取一次数据库连接然后又返回到池更高效。尤其是当系统很庞大的时候,这种优势尤为明显。当然也可以将静态的获取连接的代码块做成一个静态方法,然后分别在每个方法中获取连接。这样实质上每次取出一个代码表,都要获取一次连接,效率也不高,并且每次都要取连接,关闭连接(归池),本人不推荐这种做法。
 
四、写测试页面
写一个测试页面,在页面中导入工具类PageComboxOptions,然后直接调用其静态方法获取展示需要的html字符串代码,测试页面代码如下:
testoption.jsp
――――――――――――――――――――――――――――――――
<%@ page import="com.zfvims.common.utils.PageComboxOptions"%>
<%--
  Created by IntelliJ IDEA.
  User: leizhimin
  Date: 2006-11-29
  Time: 11:19:02
--%>
<%@ page contentType="text/html;charset=GBK" language="java" %>
<html>
<head><title>Simple jsp page</title></head>
 
<body>
<form action="#" method="post">
    <table>
        <tr>
            <td>行业类型</td>
            <td >
                <select name="hylb">
                     <%=PageComboxOptions.getOptionsHYLB()%>
                </select>
                     </td>
        </tr>
    </table>
</form>
</body>
</html>
――――――――――――――――――――――――――――――――



本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/10950,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27728 0
博客链接-Oracle RAC
001 集群分类与集群常见问题:http://blog.itpub.net/29067253/viewspace-1992433/ 002 003
480 0
博客链接—Oracle管理
001【PROFILE】使用Oracle的PROFILE对用户资源限制和密码限制的研究与探索  http://blog.itpub.net/29067253/viewspace-2006088/ 002 Oracle数据并发和一致性简介 http://blog.
733 0
Tomcat通过JNDI方式链接MySql数据库
原文:Tomcat通过JNDI方式链接MySql数据库 拷贝MySQL的JDBC驱动到Tomcat的lib路径下 配置全局数据源或者单个Web应用的局部数据源      局部数据源      在Tomcat的conf/Catalina/localhost下的 app.
971 0
关于Tomcat 5.5.XX数据源配置出现连接问题的解决 (转)
关于Tomcat 5.5.XX数据源配置出现连接问题的解决 错误信息:Cannot create JDBC driver of class '' for connect URL 'null' 当我们用Tomcat5.
471 0
博客链接—Oracle备份与恢复
001 Oracle数据库的可恢复性设置:http://blog.itpub.net/29067253/viewspace-1986010/ 002 Oracle备份与恢复入门:http://blog.
716 0
《中国人工智能学会通讯》——6.10 链接数据实践
本节书摘来自CCAI《中国人工智能学会通讯》一书中的第6章,第6.10节, 更多章节内容可以访问云栖社区“CCAI”公众号查看。
1296 0
Oracle跨库链接操作
首先通过PL sql在源数据库A中建立到目标数据库B的连接,语句如下: drop database link orclAB; create shared database link orclAB connect to TargetUserName identified by "TargetUser密码" AUTHENTICATED BY TargetUserName IDE
903 0
13690
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载