oracle9+XP+tomcat5.0.28+jdk1.4.2+struts1.2
struts连接oracle数据库,极其简单的功能,注册,登陆.不配置,直接在action 中操作,一切正常!
在struts-config.xml中, 配置datasources后,登陆就挂了:
HTTP Status 404 - Servlet actionServlet is not available. !(很怪异,action-mapping 根本没动 ,原码也找了些高人看看了,也无问题) 我是初学者,唉,自己快疯了!!
我的config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources>
<data-source key="oracleDB1" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<set-property property="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:ZGYDB" />
<set-property property="maxActive"
value="5"/>
<set-property property="username"
value="jenny"/>
<set-property property="password"
value="888888"/>
<set-property property="autoCommit"
value="true"/>
</data-source>
</data-sources>难道strus1.2中不支持data-sources?各位大人,一般在哪里配置,在server.xml中?
struts连接oracle数据库,极其简单的功能,注册,登陆.不配置,直接在action 中操作,一切正常!
在struts-config.xml中, 配置datasources后,登陆就挂了:
HTTP Status 404 - Servlet actionServlet is not available. !(很怪异,action-mapping 根本没动 ,原码也找了些高人看看了,也无问题) 我是初学者,唉,自己快疯了!!
我的config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources>
<data-source key="oracleDB1" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<set-property property="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:ZGYDB" />
<set-property property="maxActive"
value="5"/>
<set-property property="username"
value="jenny"/>
<set-property property="password"
value="888888"/>
<set-property property="autoCommit"
value="true"/>
</data-source>
</data-sources>难道strus1.2中不支持data-sources?各位大人,一般在哪里配置,在server.xml中?
<!-- configuration for commons BasicDataSource -->
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property
property="driverClassName"
value="org.postgresql.Driver" />
<set-property
property="url"
value="jdbc:postgresql://localhost/mydatabase" />
<set-property
property="username"
value="me" />
<set-property
property="password"
value="test" />
<set-property
property="maxActive"
value="10" />
<set-property
property="maxWait"
value="5000" />
<set-property
property="defaultAutoCommit"
value="false" />
<set-property
property="defaultReadOnly"
value="false" />
<set-property
property="validationQuery"
value="SELECT COUNT(*) FROM et" />
</data-source>
</data-sources>
public ActionForward
execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
javax.sql.DataSource dataSource;
java.sql.Connection myConnection;
try {
dataSource = getDataSource(request);
myConnection = dataSource.getConnection();
// do what you wish with myConnection
} catch (SQLException sqle) {
getServlet().log("Connection.process", sqle);
} finally {
//enclose this in a finally block to make
//sure the connection is closed
try {
myConnection.close();
} catch (SQLException e) {
getServlet().log("Connection.close", e);
}
}
}
在server.xml 的 </host> 加上以下代码: <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/DBConn" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/DBConn">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>iloveake</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jbuilder</value>
</parameter>
</ResourceParams>
</Context>然后编写一个连接类:package employee;import javax.naming.*;
import javax.sql.*;
import java.sql.*;public class DBConn { public static synchronized Connection getConnection() throws Exception{
Connection conn=null;
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
DataSource ds=(DataSource)envCtx.lookup("jdbc/DBConn");
conn=ds.getConnection();
}
catch(SQLException e){
e.printStackTrace();
}
catch(NamingException e){
throw e;
}
return conn;
}
}以后就可以在其他类中用:
Connection conn=DBConn.getConnection();
就可以了
注意username,password,driverClassName,url的值换成自己的就行了