在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 >
<! 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();
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