在J2EE的架構藍圖中,Struts應是屬於Web層,在Web層中,基本上不應涉及資料存儲的邏輯,Web負責客戶端的請求轉發,並適當的將一些工作交給業務邏輯層,如果需要存取資料庫,則由業務邏輯層呼叫資料存儲層的物件來進行。
不過並不是每一個程式都要設計為三層式的架構,視您的需求而定,如果您只是想利用Struts的 MVC 職責分配,區隔程式碼與視圖元件,並且想要直接在Struts的元件中進行資料庫的存取,也沒有人會阻止您這麼作(通常這發生在您開發一個小型的程式時, 中大型程式的話,並不鼓勵這麼作)。
視您的需求而定,您可以直接在Struts中適當的元件中呼叫JDBC來完成您的資料庫存取。
您也許會需要連接池,您可以使用自己的連接池元件,然後透過 Plugin 介面 來掛上連接池並用以取得DataSource,例如:
<plug-in className="onlyfun.caterpillar.MyConnectionPool">
<set-property
property="configFile"
value="/WEB-INF/conf/yourConnectionConfig.xml"/>
</plug-in>
      
      
 <set-property
property="configFile"
value="/WEB-INF/conf/yourConnectionConfig.xml"/>
</plug-in>
另一個方式是使用 Jakarta Commons DBCP 來取得DataSource,您可以在struts-config.xml中如下設定:
- struts-config.xml
 ....
 <struts-config>
     <data-sources>
         <data-source 
          key="dataSource" 
          type="org.apache.commons.dbcp.BasicDataSource"> 
             <set-property property="description" 
                           value="some database"/>
             <set-property property="driverClassName" 
                           value="com.mysql.jdbc.Driver"/>
             <set-property property="username" 
                           value="caterpillar"/>
             <set-property property="password" 
                           value="123456"/>
             <set-property property="url"
                value="jdbc:mysql://localhost:3306/TestDB"/>
         </data-source>
    </data-sources>
 ...
 <struts-config>
...然後您就可以在 Action 中使用getDataSource(request, "dataSource")來取得DataSource物件。

