Tomcat5.5 链接 Oracle 、 DB2 、 MySQL 数据源实现 JSP 下拉框的填充
作者: leizhimin
日期: 2006 年 11 月 29 日 星期三
天气:晴
背景:在做 jsp 页面过程中,常常有一些下拉框的表单,表单的内容都是数据库中某些代码表的 code (代码)和 name (名称)字段。通常 JSP 页面中要显示这些下拉选择框的时候,都是按照标准业务去做,比如通过后台方法获取到要显示代码和名称的集合,然后传递个前台的方法,最后在页面通过 struts 标签或者别的技术来实现。这样做的好处之一就是代码周整,但是也比较麻烦,效率也不高。目前我做了一个 web 应用,又大量的代码表要在页面中中以下拉选择框来展示,并且不用任何其他的框架,针对这种情况,写一个静态工具类实现,类方法直接返回要展示的下拉列表内容。实现方式如下:
一、 建立表,并填充数据:
建表的 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 数据源
―――――――――――――――――――――――――――
―――――――――――――――――――――――――――
2、 Tocmat 中的 DB2 数据源
―――――――――――――――――――――――――――
―――――――――――――――――――――――――――
3、 Tocmat 中的 MySQL 数据源
―――――――――――――――――――――――――――
―――――――――――――――――――――――――――
注意 : Oracle 和DB2 JDBC连接的URL有较大差别,其中Oracle中url="jdbc:oracle:thin:@192.168.3.12:1521:orcl" 的orcl表示数据库SID,一个SID下面的可以有多个用户,每个用户对应自己的数据库。DB2中url="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 '' || t.hy_dm || '-' || t.hy_mc || '' 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
――――――――――――――――――――――――――――――――
Simple jsp page
行业类型
――――――――――――――――――――――――――――――――
五、 看看页面效果
Web 应用的完整配置组成就不赘述了,下面看看运行后的效果:
《完》
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com