在MIS系统中,应用程序与数据库交互可以使用各种不同的连接方式,相比于以前把数据库连接写在某个JavaBean中,在配置文件中配置数据源,可能是个更好的选择,因为如果以后需要改变数据源,那么只要在配置文件进行简单的改写就可以了,而不用对程序本身的代码做任何改变,从而减少了应用程序后期维护升级的成本!
那么如何在struts框架中加入数据源的配置呢,非常简单,只要在struts-config.xml文件中写入数据源的配置信息即可,这里以在struts1.1框架中配置sqlserver数据源为例,做个简单的阐述(JBuilder2005+Tomcat 5.0+SqlServer2000):
1、  准备数据源配置所需要的jar文件
在struts框架中配置SqlServer数据源,除了需要连接sqlserver数据库的那三个jar包之外,还需要commons-collections-2.1.1.jar,commons-dbcp-1.2.1.jar,commons-pool-1.2.jar和struts-legacy.jar,其中前三个jar包在JBuilder2005的thirderpary\ jakarta-tomcat-5.0.27\common\lib中就可以直接找到,而struts-legacy.jar在JBuilder2005中的thirdparty\jakarta-struts-1.1-lib中也可以获得,并将struts-legacy.jar也拷贝到thirderpary\ jakarta-tomcat-5.0.27\common\lib里去,注意:这4个jar包除了要放在tomcat中,还要在web程序的module中的lib文件加中拷贝一份
2、  编写struts-config.xml文件,在里面加上数据源配置的一系列标记,例如:
 <data-sources>
    <data-source key="MySource" type="org.apache.commons.dbcp.BasicDataSource">
      <set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
      <set-property property="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=studb" />
      <set-property property="username" value="sa" />
      <set-property property="password"  value=""/>
    </data-source>
  </data-sources>
 
这段标记比较简单,就不一一解释了,只要记住数据源名称就行了 ,比如我这里自己起的数据源名称是“MySource”,在struts2.0中,部分标记的属性会有所不同
3、   在Action中获得数据源连接
public class LoginAction extends Action {
    public ActionForward execute(ActionMapping actionMapping,
                                 ActionForm actionForm,
                                 HttpServletRequest servletRequest,
                                 HttpServletResponse servletResponse) {
        LoginActionForm loginActionForm = (LoginActionForm) actionForm;
        ServletContext context=servlet.getServletContext();
        DataSource ds=(DataSource)context.getAttribute("MySource");
                   //将数据源连接作为参数传入某个业务逻辑所在的JavaBean中
        LoginBean bean=new LoginBean(ds);
        if(bean.isLogin(loginActionForm.getName(),loginActionForm.getPwd())){
            return actionMapping.findForward("success");
        }
        return actionMapping.findForward("fail");
    }
在LoginBean中,构造函数的关键代码如下:
 public LoginBean(DataSource ds){
        try {
            con = ds.getConnection();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
}
到这里为止,struts中配置数据源已经搞定,如果因为机器原因导致运行时连接不成功,可以试着将sql直连改为桥连