修改了很久,在网上找类似问题也没有解决。
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
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 redis.clients.jedis.Jedis;
public class AddHesuanInfo extends HttpServlet {
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://127.0.0.1:3306/linux_exam";
static final String USER = "root";
static final String PASS = "homelander";
static Connection conn = null;
static Jedis jedis = null;
public void init() throws ServletException {
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
jedis = new Jedis("127.0.0.1");
} catch (Exception e) {
throw new ServletException(e);
}
}
public void destroy() {
try {
conn.close();
jedis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
HesuanInfo info = new HesuanInfo();
info.name = req.getParameter("name");
info.number = req.getParameter("number");
info.result = req.getParameter("result");
if (info.number == null || info.name == null || info.result == null) {
throw new ServletException("please input all parameters");
}
addHesuan(info);
jedis.del(info.number);
PrintWriter out = resp.getWriter();
out.printf("[add]ok");
out.close();
}
public void addHesuan(HesuanInfo info) throws ServletException {
PreparedStatement stmt = null;
try {
stmt = conn.prepareStatement("INSERT INTO t_hesuan(number, name, result) VALUES(?, ?, ?)");
stmt.setString(1, info.number);
stmt.setString(2, info.name);
stmt.setString(3, info.result);
int row = stmt.executeUpdate();
if (row == 0) {
throw new ServletException("insert error.");
}
} catch (Exception e) {
throw new ServletException(e);
} finally {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 java.sql.SQLException: No suitable driver found for 3306
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
javax.servlet.ServletException: java.sql.SQLException: No suitable driver found for 3306
AddHesuanInfo.init(AddHesuanInfo.java:33)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)
根本原因。
java.sql.SQLException: No suitable driver found for 3306
java.sql.DriverManager.getConnection(DriverManager.java:689)
java.sql.DriverManager.getConnection(DriverManager.java:247)
AddHesuanInfo.init(AddHesuanInfo.java:30)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
Apache Tomcat/8.5.78
我以为是代码问题或者是编译的问题,有很大可能是编译问题,但是看不出是哪个过程有问题。
不报这个错误
你的驱动在哪里 你这jdbc驱动不合适啊
mysql是5.7以后版本吗
驱动包是不是没加上
1、看看你有没有导入数据库的jar 包。没有的导入对应的jar 包
2、com.mysql.cj.jdbc.Driver 这个是mysql 8.0 以上使用的,看看你的mysql数据库版本是不是5.x 的 ,如果是5.x 的使用com.mysql.jdbc.Driver。
你看看是不是这两个地方出错了
根本原因。
java.sql.SQLException: No suitable driver found for 3306
驱动错误
看一下你的数据库jar包,若是5.0的,驱动是com.mysql.jdbc.driver,若是8.0的,驱动为com.mysql.cj.jdbc.driver