Java连接Mysql和前端,Tomcat出错。

先一句话总结问题:
Java中tomcat运行显示内部服务器错误,无法显示需要的打印信息:register success

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

最近学习用java连接Mysql和前端,实现用网页显示出登陆的效果。本人是第一次接触java,Teacher在用Java连接时,使用的是DriverManager,我图省事(没听课)在csdn上搜了一个datasource连接。
但完成代码后服务器无法成功显示出要打印的信息:register success。

我总感觉是datasource接口对象调用的问题(主要别的也看不太懂【悲】),求帮助。

运行结果及详细报错内容

运行结果Tomcat日志是显示

img

连接到服务器,但是在网页登陆链接后从$END$后就报错了,即输入
http://localhost:8080/Day02_war_exploded/register”后

img

img

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

我想是不是从画红圈那里开始了一连串错误,三行代码:
MysqlDataSource First=new MysqlDataSource();
one1 = Test.getConnection();
boolean isExist = UserDao.UsernameORexist(users);


完整的代码如下
这个是用Datasource创建的mysql接口

package com.lalalala.mysql.until;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Test {
    public static Connection getConnection() throws SQLException{
        MysqlDataSource First=new MysqlDataSource();
        First.setURL("jdbc:mysql://localhost:3306/the_ms_of_hgjw?characterEncoding=UTF-8&useSSl=false");
        First.setUser("root");
        First.setPassword("9630");
        //创建连接对象one
        Connection one = First.getConnection();
        return one;
    }
}

这个是执行sql语句的类,在这调用接口。

package com.lalalala.mysql.dao;

import com.lalalala.mysql.until.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import static com.lalalala.mysql.until.Test.getConnection;


public class UserDao {
        public static Boolean UsernameORexist (String users){

            boolean Rexist = false;
            //sql语句判断用户名是否存在
            String sql = "selet * from user where users=?";
            Connection one1 = null;
            try {
                one1 = Test.getConnection();

            } catch (SQLException e) {
                e.printStackTrace();
            }
            //创建执行语句的对象
            try {
                PreparedStatement Or = one1.prepareStatement(sql);
                Or.setString(1, "users");
                ResultSet once1 = Or.executeQuery();
                //执行结果集,判断账号是否存在
                if (once1.next()) {
                    Rexist = true;
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            return Rexist;
        }

        public static int addUser (String users,int pword){
            int once2 = 0;
            //创建插入用户sql语句
            String sql = "insert into user(users,pword) values(?,?)";
            Connection one2 = null;
            try {
                one2 = getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            //创建执行语句的对象
            try {
                PreparedStatement Insert = one2.prepareStatement(sql);
                Insert.setString(1, users);
                Insert.setInt(2, pword);

                once2 = Insert.executeUpdate();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            return once2;
        }
}

第三个连接前端的代码

package com.lalalala;
//前端,后端通过http 进行连接,数据传输

import com.lalalala.mysql.dao.UserDao;

import javax.servlet.Servlet;
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;

//第一步,设置链接路径
// urlPatterns参数负责设置链接名
//name唯一标识符,一般与类名相同。
@WebServlet(name = "RegisterServerLet",urlPatterns = "/register")

//第二步,让本类成为HttpServlet的子类
//HttpServlet此类用来接收 前端发送的请求
//extends 继承关键字
public class RegisterServerLet extends HttpServlet {
    //第三步
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
        resp.setHeader("Access-Control-Allow-Origin", "*");
        resp.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE");
        resp.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");

        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        String users = req.getParameter("username");
        int pword = req.getIntHeader("password");

        boolean isExist = UserDao.UsernameORexist(users);
        String result;
        if (isExist) {
            result = "注册失败";
        } else {
            int row = UserDao.addUser(users, pword);
            result = row > 0 ? "注册失败" : "注册成功";
        }

        resp.getWriter().write(result);

        System.out.println("register success");
    }
}

类不存在错误,要么是 没有找到 对用的jar包,要么是 JDK版本 和 对应的jar包 不匹配
另外 如果存在 jar包,你部署的时候,有一起打包在 你的 war包里嘛? 这些 都 检查一下

img