struts 數(shù)據(jù)源問題
struts1.2
在使用struts-config.xml中的 <data-sources>來配置數(shù)據(jù)源的時(shí)候,
要是配置不正確的話,會(huì)發(fā)生一些奇怪的錯(cuò)誤,在提交表單的時(shí)候可能會(huì)出現(xiàn)
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
這樣的錯(cuò)誤 ,也就是找不到action類
基本配置可以參考下面
<data-sources>
<data-source key="bbsDB" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="password" value="feng" />
<set-property property="minCount" value="3" />
<set-property property="maxCount" value="10" />
<set-property property="username" value="root" />
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
<set-property property="description" value="test" />
<set-property property="url" value="jdbc:mysql://localhost:3306/bbs" />
<set-property property="readOnly" value="false" />
<set-property property="autoCommit" value="true" />
</data-source>
</data-sources>
另外還需要4個(gè)包 ,我也不知道為什么??!書上的例子竟然沒有提到,網(wǎng)上搜索后得知,
分別是
commons-dbcp-1.2.jar
commons-pool-1.2.jar
struts-legacy-1.0.jar
commons-collections-3.1.jar
把這四個(gè)jar包放到web應(yīng)用的WEB-INF/lib目錄下,還有要把
MySQL的驅(qū)動(dòng)程序包也放到這里(也可以把數(shù)據(jù)庫的驅(qū)動(dòng)包放
到%Tomcat_Home%/common/lib目錄下或%Resin_Home%/lib目錄下,
這樣在啟動(dòng)Web服務(wù)器的時(shí)候就會(huì)加載這個(gè)包,服務(wù)器和Web應(yīng)用
都可以使用驅(qū)動(dòng)程序類),好象少一個(gè)就會(huì)出錯(cuò)
!
調(diào)用的時(shí)候可以類似下面的使用
DataSource ds = getDataSource(request,"bbsDB");/*bbsDB就是上面的key*/
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SQL String");
在Action類里面可以這樣
ServletContext context = servlet.getServletContext();
DataSource dataSource = (DataSource) context
.getAttribute(Constants.DATASOURCE_KEY);
DB db = new DB(dataSource);
來獲得一個(gè)數(shù)據(jù)源,其實(shí)這里我有點(diǎn)不明白,但是可以這樣用