Statement st = con.createStatement();页面500,显示空指针异常,如何解决?

问题遇到的现象和发生背景

mysql-connector-java-8.0.26.jar
idea 2020.3
navicat 15
mysql8.0.27
Tomcat 8.5.64

问题相关代码,请勿粘贴截图

JDBCConnection

package lemon.controller;
import java.sql.Connection;
import java.sql.DriverManager;
public class JDBCConnection {
    public Connection getCon(){
        Connection connection = null;
        try{
            connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/stu?useSSL=false&serverTimezone=UTC","root","123456");
        }catch (Exception e){
            e.printStackTrace();
        }
        return connection;
    }
}

JDBCDriver

package lemon.controller;

public class JDBCDriver {
    static {

        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

用户注册

package lemon.servlet;

import lemon.controller.JDBCConnection;
import lemon.controller.JDBCDriver;
import lemon.model.OusersModel;

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 java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

//普通用户注册界面
@WebServlet("/OuAddServlet")
public class OuAddServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ResultSet rs = null;
        ArrayList<OusersModel> ousers = new ArrayList<>();
        JDBCDriver driver = new JDBCDriver();
        JDBCConnection connection = new JDBCConnection();
        Connection con = connection.getCon();
        req.setCharacterEncoding("utf-8");
        try {
            //到了statement这一行就显示空指针异常,能搜的都搜了,实在不知道怎么解决
            Statement st = con.createStatement();
            int a= st.executeUpdate("INSERT INTO `stu`.`ouserstable` (`ouname`, `ounum`, `oupwd`) VALUES ('"
                    +req.getParameter("oname")+"', "
                    +req.getParameter("onum")+", '"
                    +req.getParameter("opwd")+"')");
            if (a == 1) {
                resp.sendRedirect("ouCon.jsp");
            }else resp.sendRedirect("ousersIndex.jsp");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

form表单


<form action="OuAddServlet" method="post">
      <h1>注册</h1>
      <span>请输入您的信息</span>
      <input type="text" id="Username" name="oname" placeholder="姓名"/>
      <input type="text" id="Username02" name="onum" placeholder="账号"/>
      <input type="password" id="Password" name="opwd" placeholder="密码"/>
      <button >注册</button>
    </form>
运行结果及报错内容

img

img

img

我的解答思路和尝试过的方法

重新加载jar包
反复检查驱动代码
检查数据库命名、表名、字段名()

img

我想要达到的结果

弄清楚为什么会报异常

驱动类没有找到,驱动包没导入成功吧。

你的mysql数据库是什么版本的,可能是jar包版本太高的原因。

8.0.27

img