0

大家好,感谢您查看我的帖子。我正在尝试使用 Mysql jdbc 驱动程序将我的 servlet 与我的数据库连接起来。我来自 mysql jdbc 驱动程序的.jar位于文件夹apache-tomcat-7.0.27/lib中。MyServlet 是一个 servlet,我在必须建立连接的同一文件夹中有 SQL.java。

private static Connection conn = null;
Class.forName(driver).newInstance();
conn = (Connection) 
DriverManager.getConnection("jdbc:mysql://"+"localhost:3306"+"/"+ "ergasia3", "root" , "spiros");`

不幸的是,当我尝试这样做时,我有一个错误:com.mysql.jdbc.Driver

这是我的 web.xml

<web-app>
  <display-name>WebApp01</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.srk.pkg.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet.do</url-pattern>
  </servlet-mapping>
  <resource-ref>
    <description>database</description>
    <res-ref-name>jdbc/ergasia3</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref> 
</web-app>

现在我的 context.xml

<Context path="/ergasia3" docBase="ergasia3"
debug="5" reloadable="true" crossContext="true">
  <Resource name="jdbc/ergasia3" auth="Container"
  type="javax.sql.DataSource" 
  user="root" password="spiros"
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/ergasia3" 
  maxActive="15" maxIdle="3" /> 
</Context>
4

3 回答 3

1

不要将 .jar 放在 Tomcat 的库中,将其放在您的应用程序库文件夹中。所有外部 .jar 都应保留在此处。

于 2012-06-26T10:50:14.163 回答
0

将你的 jar 放在 WEB-INF\lib 下

于 2012-06-26T11:24:07.733 回答
0

由于您已经将数据库连接信息定义为 tomcat 中的资源,而不是使用驱动程序管理器来创建连接,因此使用类似于以下资源的资源会更简单

// context used to create a datasource
Context dataSourceContext = new InitialContext();
// when you need a connection to the database
DataSource ds = (DataSource)dataSourceContext.lookup("java:comp/env/jdbc/ergasia3");
Connection conn = ds.getConnection();

此外,正如 Soumyadip 之前所说,您应该将 mysql jdbc 驱动程序作为外部 jar 添加到 Web 应用程序,而不是在 tomcat lib 目录中,因为您的应用程序将在其 lib 目录中查找包含 jar 的而不是 tomcat lib 目录mysql jdbc 驱动程序。您如何做到这一点取决于您用于开发 Web 应用程序的 IDE。

于 2012-06-26T11:25:15.673 回答