我也刚学Struts和DataSource,楼上提的问题我也想过,希望大侠指点!!

解决方案 »

  1.   

    struts-config.xml里有datasouce这项配置吗?我用struts有三年了, 感觉struts与数据库连接没有关系吧,struts只是表示层的实现框架, 怎么会与持久层的数据源扯上关系呢?
      

  2.   

    因为数据源对于一个应用程序只有一个,所以自己写个数据库管理类,把数据源定义为静态资源,例如:
       public class DBManager{
         private static DataSource dataSource=null;
         
         /**
          * 设置数据源
          */
         public static setDataSource(DataSource dataSource){
            this.dataSource=dataSource;
         }
         
         /**
          * 得到数据库连接
          */
         public Connection getConnection(){
            return this.dataSource.getConnection();
         }
       }然后写个Strust的PlugIn插件,在PlugIn的init()方法里,程序刚开始加载的时候遍把数据源DataSource设置到上面的静态资源里,如:
      public class DataSourcePlugIn implements PlugIn {  public void destroy() {
      }
      public void init(ActionServlet parm1, ModuleConfig parm2) throws javax.servlet.ServletException {    ServletContext context=parm1.getServletContext();
        DataSource datasource=(DataSource)context.getAttribute(Action.DATA_SOURCE_KEY);
        DBManager.setDataSource(datasource);
      }
    }
      

  3.   

    通常情况下在action里面不与数据库打交到,不过在action里面一个方法可以得到datasource
    this.getDataSource( request );
      

  4.   

    程序启动以后在任何类里使用数据库连接只需要:DBManager dbManager=new DBManager();
    Connection conn=dbManager.getConnection();
      

  5.   

    struts的思想好象不是在action里得到datasource吧
    最好单独写bean来完成