Можем ли мы открыть соединение MySQL из сервлета? (с использованием соединителя MySQL) [дубликат]JAVA

Программисты JAVA общаются здесь
Anonymous
Можем ли мы открыть соединение MySQL из сервлета? (с использованием соединителя MySQL) [дубликат]

Сообщение Anonymous »

У меня есть класс DatabaseConnectionOpen.java следующим образом:

Код: Выделить всё

package db;

import java.sql.*;
public class DatabaseConnectionOpen {

static String dbHost = "jdbc:mysql://localhost:3306/javaweb?useSSL=false";
static String dbUsername = "user";
static String dbPassword = "user";

static Connection myConn = null;
static Statement myStmt = null;
static ResultSet myRes = null;

public void openConnection(){
try {
myConn = DriverManager.getConnection(dbHost, dbUsername, dbPassword);
}
catch (SQLException e) {
e.printStackTrace();
}
}
public ResultSet runQuery(String query){
try{
myStmt = myConn.createStatement();
myRes = myStmt.executeQuery(query);
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
return myRes;
}
}
public void closeConnection(){
try {
if (myRes != null) myRes.close();
if (myStmt != null) myStmt.close();
if (myConn != null) myConn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
Он отлично работает, когда я использую его из класса с именем ViewUsers.java, код которого выглядит следующим образом:

Код: Выделить всё

package dbImplement;

import db.DatabaseConnectionOpen;

import java.sql.ResultSet;
import java.sql.SQLException;

public class ViewUsers {

public static void main(String[] args) {

ResultSet myRes = null;

DatabaseConnectionOpen dbObject = new DatabaseConnectionOpen();

dbObject.openConnection();

try {
myRes = dbObject.runQuery("SELECT * FROM users");
while (myRes.next()) {
System.out.println(myRes.getString("fname") + " " + myRes.getString("lname"));
}
myRes = dbObject.runQuery("SELECT * FROM users");
while (myRes.next()) {
System.out.println(myRes.getString("fname"));
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
dbObject.closeConnection();
}

dbObject.closeConnection();

}
}
Но проблема возникает, когда я хочу использовать DatabaseConnectionOpen.java из сервлета, кодируя следующим образом:

Код: Выделить всё

package servlets;

import db.DatabaseConnectionOpen;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;

@WebServlet(name = "FirstServlet", urlPatterns = {"/msg"})

public class FirstServlet extends HttpServlet {

protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

ResultSet myRes = null;
DatabaseConnectionOpen dbObject = new DatabaseConnectionOpen();
dbObject.openConnection();
out.println("Hello Sevlet");

try {
myRes = dbObject.runQuery("SELECT * FROM users");
while (myRes.next()) {
out.println(""+myRes.getString("fname") + " " + myRes.getString("lname")+"");
}
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
dbObject.closeConnection();
}

dbObject.closeConnection();

}
}
Он печатает только «Hello Servlet», но не часть h3, и говорит:

Код: Выделить всё

>  java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/javaweb?useSSL=false
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at db.DatabaseConnectionOpen.runQuery(DatabaseConnectionOpen.java:28)
at servlets.FirstServlet.doGet(FirstServlet.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Feb 16, 2017 2:14:30 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /opt/tomcat/webapps/manager
Feb 16, 2017 2:14:30 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /opt/tomcat/webapps/manager has finished in 100 ms
Он говорит, что драйвер не найден, но у меня есть внешние библиотеки соединителя MySQL, и мой другой класс (ViewUsers.java) работает нормально в то же время, но не сервлет.

Подробнее здесь: https://stackoverflow.com/questions/422 ... -connector

Вернуться в «JAVA»