尝试从Servlet连接时,Tomcat也看不到我的CONTEXT.XML。我也使用IDEA Intellij

时间:2018-08-19 08:38:03

标签: java database tomcat servlets

我不确定为什么tomcat无法看到 WEB-INF / context.xml ,而且我在IntelliJ中没有 META-INF 文件夹。

我得到一个例外:无法为连接URL'null'创建类”的JDBC驱动程序。

我真的很喜欢IntelliJ,但是这个问题让我很生气,我在eclipse中尝试了这段代码,但它在IntelliJ却没有。有人知道为什么吗?

我真的很陌生。

这是servlet文件“ TestServlet”中的代码:

package com.luv2code.web.jdbc;

import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

@WebServlet(name = "TestServlet", urlPatterns = {"/TestServlet"})
public class TestServlet extends HttpServlet {

    @Resource(name = "jdbc/web_student_tracker")
    private DataSource dataSource;


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // Step 1: set up printWriter
        PrintWriter out = response.getWriter();
        response.setContentType("text/plain");

        // Step 2: get a connection to database
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            connection = dataSource.getConnection();

            // Step 3: create sql statement
            String sql = "select * from student";
            statement = connection.createStatement();

            // Step 4: Execute SQL query
            resultSet = statement.getResultSet();

            // Step 5: process the results
            while (resultSet.next()){
                String email = resultSet.getString("email");
                out.println(email);
                System.out.println(email);
            }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }
}

这是来自context.xml的代码:

<?xml version="1.0" encoding="UTF-8"?>
<Context>

    <Resource name="jdbc/web_student_tracker"
              auth="Container" type="javax.sql.DataSource"
              maxActive="20" maxIdle="5" maxWait="10000"
              username="webstudent" password="webstudent"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/web_student_tracker"/>
</Context>

这是屏幕截图 enter image description here

2 个答案:

答案 0 :(得分:0)

文件context.xml属于Apache Tomcat。 Apache Tomcat启动时,它将读取文件context.xml,Tomcat会搜索类com.mysql.jdbc.Driver,但找不到。

将文件mysql-connector-java-5.1.38-bin.jar放置到%CATALINA_HOME%\lib而不是Web应用程序的lib目录中。

答案 1 :(得分:0)

我找到了答案,tomcat不起作用的原因是我使用的是旧版本的jdbc jar,但是我使用的是tomcat v9,所以这就是为什么我两天没睡觉了。