Maven War JSP Project MySQL Tomcat: не удается установить соединение, источник данных недействителен: «java.sql.SQLException: не найден подходящий драйвер для

#mysql #maven #jsp #tomcat

#mysql #maven #jsp #tomcat

Вопрос:

Я перепробовал все, но все еще не могу заставить его работать. Поэтому я вынужден задать вопрос здесь, в надежде, что найду решение. Я пишу очень простое веб-приложение JSP для локального доступа к базе данных MySQL здесь. Я развертываю сгенерированный файл WAR в Tomcat. Я использую последние версии (по состоянию на 9.8.2020) MySQL (8.0.21) и Tomcat (9.0.37). Мой Maven pom.xml имеет ли это:

 ...
<dependencies&&t;
  <dependency&&t;
    <&roupId&&t;mysql</&roupId&&t;
    <artifactId&&t;mysql-connector-java</artifactId&&t;
    <version&&t;8.0.21</version&&t;
  </dependency&&t;
  <dependency&&t;
    <&roupId&&t;javax.servlet</&roupId&&t;
    <artifactId&&t;jstl</artifactId&&t;
    <version&&t;1.2</version&&t;
  </dependency&&t;
</dependencies&&t;
...
  

Затем в моем файле JSP есть эти (пароль не показан):

 <%@ pa&e import = "java.io.*,java.util.*,java.sql.*"%&&t;
<%@ pa&e import = "javax.servlet.http.*,javax.servlet.*"%&&t;
<%@ ta&lib uri="http://java.sun.com/jsp/jstl/core" prefix = "c"%&&t;
<%@ ta&lib uri="http://java.sun.com/jsp/jstl/sql" prefix = "sql"%&&t;
<!DOCTYPE html&&t;
<html lan&="en"&&t;
<head&&t;
...
<sql:setDataSource var="mystraDB" driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/mystra" user="root" password="###"/&&t;

<sql:query var="result" dataSource="${mystraDB}"&&t;
    SELECT id, isbn, title FROM mystra.books;
</sql:query&&t;
...
  

Как я показываю во многих решениях, я также скопировал mysql-connector-java-8.0.21.jar файл в папке Tomcats lib.
Я использую Visual Studio Code, и я использую его расширение Tomcat для Java, где я могу запускать и останавливать Tomcat, и я могу отлаживать пакет WAR и тестировать его оттуда.
Проблема, с которой я сталкиваюсь, заключается в следующем:

javax.servlet.Исключение ServletException: javax.servlet.jsp.JspException: не удается установить соединение, источник данных недействителен: «java.sql.SQLException: не найден подходящий драйвер для $ {mystraDB}»

для следующей строки:

 or&.apache.jasper.JasperException: An exception occurred processin& [/fetchBooks.jsp] at line [30]

27:             <sql:setDataSource var="mystraDB" driver="com.mysql.jdbc.Driver"
28:                 url="jdbc:mysql://localhost:3306/mystra" user="root" password="###"/&&t;
29: 
30:             <sql:query var="result" dataSource="${mystraDB}"&&t;
31:                 SELECT id, isbn, title FROM mystra.books;
32:             </sql:query&&t;
33: 
  

У вас есть какие-либо оставшиеся идеи о том, как я могу решить эту проблему?
Все, что не показано здесь, приветствуется 🙂

Ответ №1:

У других возникли проблемы, я нашел, в чем проблема с моим проектом. Я не смог разобрать выражения EL с помощью $. Итак, я добавил эту строку в каждый jsp, который у меня был:

 <%@ pa&e isELI&nored="false" %&&t;
  

Также я обновил web.xml вот так:

 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.or&/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
     version="2.4"&&t;