在Struts中, 利用数据源技术,可以将驱动类,连接字符串,用户名,密码等信息与具体代码的分离,从而可以增加系统的安全性和移植性等.
但在使用出现点问题,现在记录如下:
配置好的Struts-config.xml如下:
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"
>
<
struts-config
>

<!--
数据源代码如下,"key"这个名称可以自己指定
-->
<
data-sources
>
<
data-source
key
="dataSource"
type
="org.apache.commons.dbcp.BasicDataSource"
>
<
set-property
property
="driverClassName"
value
="org.gjt.mm.mysql.Driver"
/>
<
set-property
property
="url"
value
="jdbc:mysql://localhost:3306/login"
/>
<
set-property
property
="username"
value
="root"
/>
<
set-property
property
="password"
value
="123654"
/>
</
data-source
>
</
data-sources
>


<
form-beans
>
<
form-bean
name
="loginActionForm"
type
="login3.LoginActionForm"
/>
</
form-beans
>
<
action-mappings
>
<
action
input
="login.jsp"
name
="loginActionForm"
path
="/loginAction"
scope
="session"
type
="login3.LoginAction"
validate
="false"
>
<
forward
name
="loginsuccess"
path
="/welcome.jsp"
/>
<
forward
name
="loginfail"
path
="/error.jsp"
/>
</
action
>
</
action-mappings
>
</
struts-config
>

在Java代码中中,可以通过以下形式访问数据源
javax.sql.DataSource ds
=
null
;


/**/
/*
不用数据源的方式
Class.forName("org.gjt.mm.mysql.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/login", "root", "123654");
*/

ds
=
getDataSource(servletRequest,
"
dataSource
"
);
con
=
ds.getConnection();
但是直接这样运行起来会出现以下问题:

解决方案如下:
需要将struts-legacy.jar,commons-pool-1.3.jar,commons-dbcp-1.2.2.jar三个文件放到
web模块名/WEB-INF/lib 下
重新web run一下,OK了
PS:三个jar文件的下载地址:
http://www.live-share.com/files/302633/Struts_DataDourse.rar.html