jsp mysql下拉框联动_Tomcat5.5链接Oracle、DB2、MySQL数据源实现JSP下拉框的填充

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

作者:leizhimin

日期:2006年11月29日星期三

天气:晴

背景:在做jsp页面过程中,常常有一些下拉框的表单,表单的内容都是数据库中某些代码表的code(代码)和name(名称)字段。通常JSP页面中要显示这些下拉选择框的时候,都是按照标准业务去做,比如通过后台方法获取到要显示代码和名称的集合,然后传递个前台的方法,最后在页面通过struts标签或者别的技术来实现。这样做的好处之一就是代码周整,但是也比较麻烦,效率也不高。目前我做了一个web应用,又大量的代码表要在页面中中以下拉选择框来展示,并且不用任何其他的框架,针对这种情况,写一个静态工具类实现,类方法直接返回要展示的下拉列表内容。实现方式如下:

一、建立表,并填充数据:

建表的Oracle SQL如下:

――――――――――――――――――

createtable DM_HY

(

HY_DM VARCHAR2(6) not null,

HY_MC VARCHAR2(200) not null,

MLBZCHAR(1) not null,

DLBZCHAR(1) not null,

ZLBZCHAR(1) not null,

XLBZCHAR(1) not null,

FQHYVARCHAR2(6),

XYBZCHAR(1) not null

);-- Add comments to the tablecomment on table DM_HY

is'行业代码表';-- Add comments to the columnscomment 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'选用标志';

插入数据:

insertinto 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数据源

―――――――――――――――――――――――――――

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"/>

―――――――――――――――――――――――――――

2、Tocmat中的DB2数据源

―――――――――――――――――――――――――――

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"/>

―――――――――――――――――――――――――――

3、Tocmat中的MySQL数据源

―――――――――――――――――――――――――――

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"/>

―――――――――――――――――――――――――――

注意: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

――――――――――――――――――――――――――――――――

Created by IntelliJ IDEA.

User: leizhimin

Date: 2006-11-29

Time: 11:19:02

--%>

Simple jsp page
行业类型

――――――――――――――――――――――――――――――――

五、看看页面效果

Web应用的完整配置组成就不赘述了,下面看看运行后的效果:

《完》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值